| from __future__ import annotations | |
| import sys | |
| from pathlib import Path | |
| ROOT = Path(__file__).resolve().parents[1] | |
| sys.path.insert(0, str(ROOT)) | |
| from answering import evaluate_query | |
| from clause_retrieval import init_clause_retrieval, load_ontology | |
| from config import CORPUS_MCKF_ONTOLOGY_PATH | |
| QUESTION = ( | |
| "Dönem başında kayıt yaptırırken tez dersi ve uzmanlık dersi seçmeyen öğrenci bir dönem " | |
| "boyunca dersine devam etmiş ve tezini tamamlamış ancak son aşamada enstitü ders " | |
| "seçmediğiniz için mezun olamıyorsunuz diyor. Burada kimler sorumluluklarını yapmamıştır " | |
| "kanun maddelerine göre?" | |
| ) | |
| def main() -> None: | |
| init_clause_retrieval(load_ontology(CORPUS_MCKF_ONTOLOGY_PATH)) | |
| result = evaluate_query(QUESTION) | |
| answer = result.get("answer", "") | |
| expected_sources = {"Madde 19", "Madde 22", "Madde 44"} | |
| actual_sources = set(result.get("source_ids", [])) | |
| required_phrases = ( | |
| "Aktör bazlı sorumluluk testi", | |
| "Öğrenci - koşullu sorumluluk", | |
| "Danışman - olası rehberlik/süreç sorumluluğu", | |
| "sorumluluğun kesin dağılımı yapılamaz", | |
| ) | |
| assert result.get("error", "") == "", result | |
| assert expected_sources <= actual_sources, actual_sources | |
| assert all(phrase in answer for phrase in required_phrases), answer | |
| print("Normative case analysis: PASS") | |
| print("Sources:", ", ".join(sorted(actual_sources))) | |
| if __name__ == "__main__": | |
| main() | |