@akredit/acik-mcp 0.1.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -8
- package/dist/apps/acik-mcp/src/araclar.d.ts +2 -28
- package/dist/apps/acik-mcp/src/araclar.js +27 -114
- package/dist/apps/acik-mcp/src/bologna.d.ts +209 -0
- package/dist/apps/acik-mcp/src/bologna.js +1321 -0
- package/dist/apps/acik-mcp/src/genel-ayristir.d.ts +83 -0
- package/dist/apps/acik-mcp/src/genel-ayristir.js +411 -0
- package/dist/apps/acik-mcp/src/http.js +4 -2
- package/dist/apps/acik-mcp/src/index.d.ts +6 -0
- package/dist/apps/acik-mcp/src/index.js +6 -0
- package/dist/apps/acik-mcp/src/kaynak-dogrula.d.ts +47 -0
- package/dist/apps/acik-mcp/src/kaynak-dogrula.js +319 -0
- package/dist/apps/acik-mcp/src/kaynak.d.ts +72 -0
- package/dist/apps/acik-mcp/src/kaynak.js +155 -0
- package/dist/apps/acik-mcp/src/kisisel-veri.d.ts +14 -2
- package/dist/apps/acik-mcp/src/kisisel-veri.js +63 -15
- package/dist/apps/acik-mcp/src/not-tablosu.d.ts +33 -0
- package/dist/apps/acik-mcp/src/not-tablosu.js +243 -0
- package/dist/apps/acik-mcp/src/promptlar.d.ts +25 -0
- package/dist/apps/acik-mcp/src/promptlar.js +253 -0
- package/dist/apps/acik-mcp/src/sunucu.d.ts +12 -4
- package/dist/apps/acik-mcp/src/sunucu.js +103 -24
- package/dist/apps/acik-mcp/src/temel.d.ts +54 -0
- package/dist/apps/acik-mcp/src/temel.js +10 -0
- package/dist/apps/acik-mcp/src/yardim.d.ts +56 -0
- package/dist/apps/acik-mcp/src/yardim.js +371 -0
- package/dist/packages/baglayicilar/src/bologna-proliz/ayristir.d.ts +29 -0
- package/dist/packages/baglayicilar/src/bologna-proliz/ayristir.js +200 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,24 +1,110 @@
|
|
|
1
1
|
# @akredit/acik-mcp
|
|
2
2
|
|
|
3
|
-
Yükseköğretimde kalite güvencesi ve akreditasyon işleri için herkese açık MCP sunucusu. Kendi yapay zekâ aracınıza (Claude, Claude Code, Cursor, VS Code) bağlanır ve
|
|
3
|
+
Yükseköğretimde kalite güvencesi ve akreditasyon işleri için herkese açık, ücretsiz MCP sunucusu. Kendi yapay zekâ aracınıza (Claude, ChatGPT, Claude Code, Cursor, VS Code) bağlanır; hazır başlangıçlar (istemler) ve on sekiz araç verir.
|
|
4
|
+
|
|
5
|
+
İlke: süreci sıfır kullanıcı müdahalesiyle, hızlıca ama denetimli ve teyitli tamamlamak. Akredit özgür yazılımdır; halüsinasyona yer yoktur.
|
|
6
|
+
|
|
7
|
+
## İlk 2 dakika
|
|
8
|
+
|
|
9
|
+
1. Asistanınıza `https://akredit.org/mcp` adresini ekleyin (aşağıda "Bağlantı") ya da yerelde `npx -y @akredit/acik-mcp` çalıştırın.
|
|
10
|
+
2. Yeni sohbette `akredit` yazın ya da hazır başlangıçlardan `akredit` komutunu seçin. Claude'da "+" altında Akredit, Cursor ve Claude Code'da eğik çizgi (/) ile görünür. Görünmüyorsa "Akredit ile başlayalım" yazın.
|
|
11
|
+
3. Odağınızı seçin. Her menünün son satırı "4) Hepsini akıllıca doldur"dur: asistan her alanı kendisi doldurur, denetler, geçmeyeni düzeltir ve sonunda tek özet gösterir. Değiştirmek istediğiniz alanın numarasını yazarsınız; sonradan da kolayca güncellersiniz.
|
|
12
|
+
|
|
13
|
+
## Hiç bilmeyenler için
|
|
14
|
+
|
|
15
|
+
Yapay zekâyı ilk kez kullanıyorsanız bu adımları sırayla izleyin. Her adım tek iştir. Menü adları sürüme göre biraz farklı olabilir.
|
|
16
|
+
|
|
17
|
+
1. Claude'a Akredit'i ekleyin. claude.ai'de sol alttaki adınıza tıklayın, Settings (Ayarlar), sonra Connectors (Bağlayıcılar). Add custom connector düğmesine basın. Ad: Akredit. Adres: `https://akredit.org/mcp`. Add deyin. Listede Akredit görünür.
|
|
18
|
+
2. Yeni sohbet açın ve `akredit` yazın. Ekranda hangi aracı kullanmak istediğinizi soran bir menü görürsünüz. Bologna için 1 yazın.
|
|
19
|
+
3. OBS'nize kendiniz girin. Asistan OBS adresinizi sorar ve tarayıcı aracı varsa sayfayı kenarda açar. Kullanıcı adınızı ve parolanızı yalnız OBS'nin kendi giriş ekranına, kendiniz yazın. Asistana, sohbete ya da Akredit'e asla yazmayın. Doğrulama kodu ve "Ben robot değilim" kutusu da sizindir. Girince asistana yalnız "girdim" yazın.
|
|
20
|
+
4. Kenardaki tarayıcı. Claude in Chrome eklentisi, Claude masaüstü uygulamasının tarayıcı paneli ya da ChatGPT'nin ajan modu sayfayı okuyabilir. Asistan ders listenizi numaralı gösterir, siz dersin numarasını yazarsınız.
|
|
21
|
+
5. Seçin. Asistan eksik alanları listeler. 4 yazarsanız hepsini akıllıca doldurur ve tek özet gösterir; isterseniz alan alan seçenek de görebilirsiniz. Kaynakları size sormaz: ders içeriğine uygun eserleri kendi web aramasıyla bulur, Akredit'in kaynak doğrulayıcısından geçirir ve bağlantısıyla gösterir. Doğrulanamayan kaynak önerilmez.
|
|
22
|
+
6. OBS'ye yazma. Üç yol var: 1) asistan formu doldurur, Kaydet'e siz basarsınız 2) asistan doldurur ve sizin açık izninizle kaydeder (her sekmeden önce özet gösterip "evet" ister ya da bir kez "hepsini kaydet" izni alır) 3) alan alan kopyalarsınız. Tarayıcı aracı yoksa 3. yol kullanılır. Parolanız yine yalnız sizdedir.
|
|
23
|
+
7. Engel olursa. Tarayıcı aracı yoksa, site açılmıyorsa, CAPTCHA ya da oturum düşmesi olursa asistana ne olduğunu yazın; adım adım çözüm verir. Hiçbiri olmazsa yedek yol hep var: OBS'de ders sayfasında Ctrl+A, Ctrl+C, sohbete Ctrl+V.
|
|
24
|
+
|
|
25
|
+
## Hazır başlangıçlar (istemler)
|
|
26
|
+
|
|
27
|
+
| İstem | Ne yapar |
|
|
28
|
+
|---|---|
|
|
29
|
+
| `akredit` | Araç menüsü: önce hangi aracı kullanacağınızı sorar (Bologna paketi, öğrenme çıktısı, ÇK/PÇ hesabı, ölçüt rehberi, dil denetimi ya da başka bir araç). |
|
|
30
|
+
| `bologna_doldur` | OBS'nize kendiniz girersiniz; asistan Bologna sayfanızı okur, eksikleri akıllıca tamamlayıp denetler, tek özet gösterir; formu doldurur ya da kopya metni verir. Kaydet'e siz basarsınız ya da açık izninizle asistan basar. |
|
|
31
|
+
| `cikti_yaz` | Ders öğrenme çıktılarını ölçülebilir fiillerle tek adımda yazar ya da iyileştirir, denetler, özet gösterir. |
|
|
32
|
+
| `ck_pc_hesabi` | Excel not tablonuzu yapıştırırsınız; öğrencilere takma ad verilir, ÇK ve PÇ sağlanma düzeyi hesaplanır. |
|
|
33
|
+
| `olcut_rehberi` | YÖKAK, MÜDEK, FEDEK, EPDAD ya da SABAK ölçütünü resmî metniyle bulur, kanıt listesi çıkarır. |
|
|
34
|
+
| `dil_denetimi` | Rapor metnini denetler, bulguları düzeltip yeniden denetler, tek özet gösterir. |
|
|
35
|
+
|
|
36
|
+
## Araçlar
|
|
4
37
|
|
|
5
38
|
| Araç | Ne yapar |
|
|
6
39
|
|---|---|
|
|
7
|
-
| `olcut_ara` | YÖKAK ya da program akreditasyonu (MÜDEK, FEDEK, SABAK, EPDAD) ölçütlerinde
|
|
8
|
-
| `olcut_getir` | Bir ölçütün resmî metnini
|
|
40
|
+
| `olcut_ara` | YÖKAK ya da program akreditasyonu (MÜDEK, FEDEK, SABAK, EPDAD) ölçütlerinde arar. |
|
|
41
|
+
| `olcut_getir` | Bir ölçütün resmî metnini kaynak sayfasıyla getirir. |
|
|
9
42
|
| `olgunluk_duzeyleri` | Alt ölçütün olgunluk düzeylerini ve örnek kanıtlarını getirir. |
|
|
10
|
-
| `oz_degerlendirme_iskeleti` | Öz değerlendirme raporu iskeletini çıkarır; her bölüm EKSİK işaretli
|
|
11
|
-
| `
|
|
43
|
+
| `oz_degerlendirme_iskeleti` | Öz değerlendirme raporu iskeletini çıkarır; her bölüm EKSİK işaretli gelir. |
|
|
44
|
+
| `bologna_ayristir` | Yapıştırılan ya da tarayıcıyla okunan Bologna sayfasını çözer. Önce Proliz, olmazsa her OBS için genel ayrıştırıcı (HTML ya da düz metin, Türkçe ya da İngilizce). Bulunan ve bulunamayan alanları ve güven düzeyini söyler. Adres çekmez. |
|
|
45
|
+
| `bologna_denetle` | Bologna ders paketini denetler; boş, zayıf ve tamam alanları numaralı verir. |
|
|
46
|
+
| `bologna_alan_rehberi` | Bir alanın doldurma kurallarını, sınırlarını, kalıplarını ve Bloom fiillerini verir. |
|
|
47
|
+
| `bologna_taslak_denetle` | Asistanın yazdığı 1-3 seçeneği kurallarla denetler: geçer ya da eksik nedenleri. Toplamları kendisi hesaplar. |
|
|
48
|
+
| `is_yuku_oner` | AKTS ve T+U+L'den toplamı hedefe tam eşit üç iş yükü dağılımı önerir. |
|
|
49
|
+
| `bologna_durum` | Seçilen alanların bütününe bakar: kaç alan kaldı, tamamlandı mı. |
|
|
50
|
+
| `bologna_kopya_metni` | Seçilen alanları OBS'ye alan alan kopyalanacak düz metin olarak verir. |
|
|
51
|
+
| `kaynak_bicimle` | Kitap ya da makale bilgisini APA 7'ye benzer künyeye çevirir; eksik bilgiyi [EKSİK] yazar, uydurmaz. |
|
|
52
|
+
| `kaynak_dogrula` | DOI, ISBN ya da başlık ile yazarı açık kataloglarda (Crossref, Open Library, Google Books) arar. Bulursa doğrulanmış künye ve bağlantı, bulamazsa "doğrulanamadı" döner; doğrulanamayan kaynak önerilmez. |
|
|
53
|
+
| `not_tablosu_ayristir` | Excel ya da CSV not tablosunu ÇK/PÇ hesabına hazırlar; ad ve numara sütunlarını atıp öğrencilere takma ad verir, başlıklardan soru ve çıktı eşlemesini sezer. |
|
|
12
54
|
| `ck_pc_hesapla` | Ders öğrenme çıktısı ve program çıktısı sağlanma düzeyini hesaplar. |
|
|
13
55
|
| `rapor_dil_denetle` | Rapor metninde kanıtsız üstünlük, belirsiz özne gibi dil sorunlarını işaretler. |
|
|
56
|
+
| `kurulum_yardimi` | Bağlayıcı ekleme ve OBS'ye tarayıcıyla giriş için istemciye göre adım adım rehber. |
|
|
57
|
+
| `engel_coz` | Tarayıcı aracı yok, site açılmıyor, CAPTCHA, çerçeve, oturum düşmesi gibi engeller için numaralı çözüm adımları. |
|
|
58
|
+
|
|
59
|
+
Sunucu model çağırmaz ve metin üretmez. Bologna seçeneklerini sizin asistanınız yazar; Akredit kural ve kalıp verir, yazılanı denetler, sayıları hesaplar. Kurallar Akredit'in iç kurallarıdır, resmî ölçüt değildir; kurumunuzun yönergesi önceliklidir.
|
|
60
|
+
|
|
61
|
+
## Örnek konuşma (kurgu ders)
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Hoca: akredit
|
|
65
|
+
Asistan: Bugün neye odaklanalım? 1) Bologna paketi 2) Öğrenme çıktısı 3) ÇK/PÇ 4) Ölçüt rehberi 5) Dil denetimi
|
|
66
|
+
Hoca: 1
|
|
67
|
+
Asistan: Önce bir kural: kullanıcı adınızı ve parolanızı yalnız OBS'nin kendi ekranına, kendiniz yazın.
|
|
68
|
+
Bana asla yazmayın. OBS adresiniz nedir?
|
|
69
|
+
Hoca: obs.kurgu.edu.tr
|
|
70
|
+
Asistan: OBS giriş ekranını kenarda açtım. Bilgilerinizi oraya yazın, bitince bana yalnız "girdim" yazın.
|
|
71
|
+
Hoca: girdim
|
|
72
|
+
Asistan: Dersleriniz: 1) KRG204 Kurgu Ölçme Yöntemleri 2) KRG305 Kurgu Veri Çözümlemesi. Hangisi?
|
|
73
|
+
Hoca: 1
|
|
74
|
+
Asistan: Sayfayı okudum. 9 alan eksik ya da zayıf:
|
|
75
|
+
1) Amaç (boş) 2) İçerik (8 kelime) 3) Çıktılar (2 var, 8-12 olmalı) 4) Haftalar (3 var) ...
|
|
76
|
+
1) Alan alan seçenek göstereyim 2) Yalnız boşlar 3) Kendim seçeyim 4) Hepsini akıllıca doldur (önerilen)
|
|
77
|
+
Hoca: 4
|
|
78
|
+
Asistan: Şu alanları şöyle doldurdum, hepsi denetimden geçti:
|
|
79
|
+
1) Amaç: "Bu ders, kurgu ölçme kavramlarını ..." (66 kelime)
|
|
80
|
+
2) İçerik: ... 3) Çıktılar: 8 çıktı ... 9) Kaynaklar: 2 eser, ikisi de katalogda doğrulandı:
|
|
81
|
+
Deneme, C. (2019). Kurgu istatistiği. Kurgu Akademi. https://books.google.com/books?id=...
|
|
82
|
+
Değiştirmek istediğiniz alanın numarasını yazın; yoksa devam diyebilirsiniz.
|
|
83
|
+
Bunları daha sonra da kolayca güncelleyebilirsiniz.
|
|
84
|
+
Hoca: devam
|
|
85
|
+
Asistan: OBS'ye nasıl yazalım? 1) Formu ben doldurayım, Kaydet'e siz basın
|
|
86
|
+
2) Formu ben doldurup kaydedeyim (her sekmeden önce evet isterim) 3) Alan alan kopyalayın
|
|
87
|
+
4) Hepsini akıllıca doldur ve kaydet (önerilen)
|
|
88
|
+
Hoca: 4
|
|
89
|
+
Asistan: Bütün sekmeleri doldurup kaydetmem için izin veriyor musunuz? hepsini kaydet / hayır
|
|
90
|
+
Hoca: hepsini kaydet
|
|
91
|
+
Asistan: Üç sekmeyi doldurdum ve kaydettim. Dersi Verenler satırına dokunmadım.
|
|
92
|
+
Asistan: Sayfayı yeniden okudum ve denetledim: Tamamlandı.
|
|
93
|
+
```
|
|
14
94
|
|
|
15
|
-
## Salt okuma
|
|
95
|
+
## Salt okuma ve güvenlik
|
|
16
96
|
|
|
17
97
|
- Bütün araçlar salt okumadır ve aynı girdiye aynı sonucu verir.
|
|
18
98
|
- Hesap ve anahtar gerekmez. Kurum verisine erişmez, hiçbir yere yazmaz, yapay zekâ modeli çağırmaz.
|
|
99
|
+
- Giriş bilgisi hiç girmez: parola, doğrulama kodu ya da oturum çerezi görülürse çağrı reddedilir, değer yanıta yazılmaz. İstemler asistana hocadan giriş bilgisi istemeyi yasaklar. CAPTCHA'yı hoca çözer. OBS'de Kaydet'e hoca basar ya da hocanın açık izniyle asistan basar; onaya gönderimi hoca yapar.
|
|
19
100
|
- Ölçüt metinleri resmî belgeden alınmıştır. Her yanıt kaynağını (belge adresi, sayfa, SHA-256) taşır. Belgeden alınamayan metin DOĞRULANMADI olarak döner.
|
|
20
101
|
- Sayılar yalnız hesaptan gelir; araçlar metin uydurmaz.
|
|
21
|
-
-
|
|
102
|
+
- Bologna sayfasındaki Dersi Verenler, Dersin Yardımcıları ve Koordinatör satırları hocanın kendi sayfasında yayımlanmış görev bilgisidir: olduğu gibi okunur, korunur ve OBS'ye geri yazılırken değiştirilmez. Bologna araçlarında yalnız giriş bilgisi reddedilir.
|
|
103
|
+
- Öğrenci verisi takma adla işlenir: `not_tablosu_ayristir` ad, soyad ve numara sütunlarını hesaplamadan önce bellekte atar ve o1, o2 takma adı verir; not tablosu ve ÇK/PÇ araçlarında kalan ad ya da numara reddedilir. Öbür araçlarda T.C. kimlik numarası, öğrenci numarası ve IBAN reddedilir.
|
|
104
|
+
- Sunucu istek içeriğini günlüğe yazmaz.
|
|
105
|
+
- Kaynakçadaki yazar adları yayımlanmış künyedir; kaynak alanlarında serbesttir. Kaynak uydurulmaz: asistan web aramasıyla aday bulur, her adayı `kaynak_dogrula` ile katalogda doğrular ve yalnız doğrulananı bağlantısıyla önerir.
|
|
106
|
+
- Sunucu kullanıcıdan adres almaz. Bologna sayfasını siz yapıştırırsınız ya da asistanınız kendi tarayıcı veya web aracıyla okur.
|
|
107
|
+
- Dış istek: `kaynak_dogrula` yalnız api.crossref.org, openlibrary.org ve www.googleapis.com (Books) adreslerine sorar; sunucuyu kendiniz barındırıyorsanız bu üç adrese HTTPS çıkışı açık olmalıdır. Bağladığınız yapay zekâ hizmeti girdiyi kendi koşullarıyla işler.
|
|
22
108
|
|
|
23
109
|
## Bağlantı
|
|
24
110
|
|
|
@@ -42,7 +128,7 @@ Uzak sunucu:
|
|
|
42
128
|
claude mcp add --transport http akredit https://akredit.org/mcp
|
|
43
129
|
```
|
|
44
130
|
|
|
45
|
-
Yerel sunucu (Node.js 22.18 ya da üstü):
|
|
131
|
+
Yerel sunucu (npm paketi `@akredit/acik-mcp`, Node.js 22.18 ya da üstü):
|
|
46
132
|
|
|
47
133
|
```bash
|
|
48
134
|
claude mcp add akredit -- npx -y @akredit/acik-mcp
|
|
@@ -1,31 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
/** Her yanıtta yer alan not. */
|
|
4
|
-
export declare const AKREDIT_NOTU = "Akredit ba\u011F\u0131ms\u0131z, a\u00E7\u0131k kaynak bir ara\u00E7t\u0131r; Y\u00D6KAK ile ba\u011F\u0131 yoktur. Sonu\u00E7lar resm\u00EE de\u011Ferlendirme yerine ge\u00E7mez; beyan ve karar kurumdad\u0131r.";
|
|
5
|
-
export interface Kaynak {
|
|
6
|
-
ad: string;
|
|
7
|
-
adres: string;
|
|
8
|
-
sayfa?: number | null;
|
|
9
|
-
sha256?: string | null;
|
|
10
|
-
erisimTarihi?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface AracSonucu {
|
|
13
|
-
sonuc: unknown;
|
|
14
|
-
kaynak: Kaynak[];
|
|
15
|
-
}
|
|
16
|
-
export interface AracBaglami {
|
|
17
|
-
simdi: () => Date;
|
|
18
|
-
}
|
|
19
|
-
export interface AcikArac<S extends z.ZodObject = z.ZodObject> {
|
|
20
|
-
ad: string;
|
|
21
|
-
baslik: string;
|
|
22
|
-
aciklama: string;
|
|
23
|
-
girdi: S;
|
|
24
|
-
calistir: (girdi: z.infer<S>, b: AracBaglami) => AracSonucu;
|
|
25
|
-
}
|
|
26
|
-
/** Araç girdisi hatası: kullanıcıya gösterilecek Türkçe ileti. */
|
|
27
|
-
export declare class AracHatasi extends Error {
|
|
28
|
-
}
|
|
1
|
+
import { type AcikArac } from "./temel.ts";
|
|
2
|
+
export * from "./temel.ts";
|
|
29
3
|
/** Düzey tanımı belgeden ayrılamayan gösterge için dönen değer; tanım uydurulmaz. */
|
|
30
4
|
export declare const OKUNAMADI = "Belgeden okunamad\u0131";
|
|
31
5
|
export declare const ACIK_ARACLAR: readonly AcikArac[];
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
// durum yok. Ölçüt metni yalnız resmî belgeden çıkarılmış çerçeve verisinden gelir (ilke 6); belgeden
|
|
3
3
|
// alınamayan metin DOĞRULANMADI olarak döner. Sayılar yalnız @akredit/olcme hesabından gelir (ilke 2).
|
|
4
4
|
// Öz değerlendirme iskeleti metin yazmaz: her bölüm EKSİK işaretiyle ve gereken kanıt türleriyle döner (ilke 1).
|
|
5
|
-
import {
|
|
5
|
+
import { dilDenetle } from "../../../packages/cekirdek/src/index.js";
|
|
6
6
|
import { belgeAdi, DOGRULANMADI, EPDAD_DERECELENDIRME_ANAHTARI, olcutEkleri, ozguBagi, ozguBolumListesi, PROGRAM_BELGELERI, PROGRAM_CERCEVELERI, tumOlcutler, YOKAK_KIDR_3_2_1, YOKAK_KURUMSAL_3_3, } from "../../../packages/cerceveler/src/index.js";
|
|
7
7
|
import { dersiOlc, HESAP_SURUMU } from "../../../packages/olcme/src/index.js";
|
|
8
8
|
import { z } from "zod";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
import { BOLOGNA_ARACLARI, bolognaDenetleAraci } from "./bologna.js";
|
|
10
|
+
import { kaynakBicimleAraci } from "./kaynak.js";
|
|
11
|
+
import { kaynakDogrulaAraci } from "./kaynak-dogrula.js";
|
|
12
|
+
import { notTablosuAyristirAraci } from "./not-tablosu.js";
|
|
13
|
+
import { AracHatasi, arac, DEPO, KOD_KAYNAGI } from "./temel.js";
|
|
14
|
+
import { engelCozAraci, kurulumYardimiAraci } from "./yardim.js";
|
|
15
|
+
export * from "./temel.js";
|
|
16
16
|
// ---------------------------------------------------------------- Çerçeve yardımcıları
|
|
17
17
|
const BELGE_ADI = {
|
|
18
18
|
[YOKAK_KURUMSAL_3_3.kaynak?.dosya ?? ""]: "YÖKAK Değerlendirme Programları Kılavuzu 3.3, Ek-1 Dereceli Değerlendirme Anahtarı",
|
|
@@ -77,7 +77,6 @@ function belgeKaynagi(c, dosya, sayfa) {
|
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
const olcutKaynagi = (c, o) => belgeKaynagi(c, o.kaynakDosya, o.kaynakSayfa);
|
|
80
|
-
const KOD_KAYNAGI = (yol, ad) => ({ ad, adres: `${DEPO}/tree/main/${yol}` });
|
|
81
80
|
function olcutBul(c, kod) {
|
|
82
81
|
const k = kod.trim().toLocaleUpperCase("tr").replace(/\.$/u, "");
|
|
83
82
|
const o = tumOlcutler(c.olcutler).find((x) => x.kod === k);
|
|
@@ -91,7 +90,8 @@ const metinGoster = (o) => (o.metinDurumu === "dogrulanmadi" ? DOGRULANMADI : o.
|
|
|
91
90
|
const olcutAra = arac({
|
|
92
91
|
ad: "olcut_ara",
|
|
93
92
|
baslik: "Ölçüt ara (YÖKAK ve program akreditasyonu)",
|
|
94
|
-
aciklama: "YÖKAK
|
|
93
|
+
aciklama: "YÖKAK ya da program akreditasyonu (MÜDEK, FEDEK, SABAK, EPDAD) ölçütlerinde sözcük ya da kodla arar. Metinler resmî belgeden alınır; alınamayan metin DOĞRULANMADI döner.",
|
|
94
|
+
sonrakiAdim: "Hocaya en uygun 2-3 sonucu numaralı gösterin; seçtiği ölçütün tam metni için olcut_getir'i çağırın.",
|
|
95
95
|
girdi: z.object({
|
|
96
96
|
sorgu: z.string().trim().min(1).max(200).describe("Aranacak ifade ya da kod, ör. 'paydaş katılımı' ya da 'B.3'"),
|
|
97
97
|
cerceve: cerceveGirdisi,
|
|
@@ -171,7 +171,8 @@ const olcutAra = arac({
|
|
|
171
171
|
const olcutGetir = arac({
|
|
172
172
|
ad: "olcut_getir",
|
|
173
173
|
baslik: "Ölçütü getir (YÖKAK ve program akreditasyonu)",
|
|
174
|
-
aciklama: "Bir ölçütün resmî metnini
|
|
174
|
+
aciklama: "Bir ölçütün resmî metnini kaynak belge, sayfa ve dosya özetiyle getirir; üst ve alt ölçütler, EPDAD göstergeleri, MÜDEK ve FEDEK programa özgü bölümleri de gelir. Metin tahminle doldurulmaz.",
|
|
175
|
+
sonrakiAdim: "Alt ölçütse olgunluk_duzeyleri ile düzeyleri ve örnek kanıtları gösterin. Hocaya sorun: 1) örnek kanıtlar 2) başka ölçüt 3) öz değerlendirme iskeleti.",
|
|
175
176
|
girdi: z.object({
|
|
176
177
|
kod: z
|
|
177
178
|
.string()
|
|
@@ -235,7 +236,8 @@ const olcutGetir = arac({
|
|
|
235
236
|
const olgunlukDuzeyleri = arac({
|
|
236
237
|
ad: "olgunluk_duzeyleri",
|
|
237
238
|
baslik: "Alt ölçüt olgunluk düzeyleri ve örnek kanıtlar",
|
|
238
|
-
aciklama: "Bir alt
|
|
239
|
+
aciklama: "Bir YÖKAK alt ölçütünün (ör. B.1.2) 1-5 olgunluk düzeyi metinlerini ve örnek kanıtlarını getirir. Düzey önermez; düzeye kurum kanıtla karar verir.",
|
|
240
|
+
sonrakiAdim: "Örnek kanıtları hocanın elindekilerle eşleştirin: her kanıt için 1) var 2) yok 3) emin değilim diye sorun. Yok olanlar EKSİK kalır.",
|
|
239
241
|
girdi: z.object({ kod: z.string().trim().min(1).max(20).describe("Alt ölçüt kodu, ör. 'B.1.2'") }),
|
|
240
242
|
calistir: ({ kod }) => {
|
|
241
243
|
const CERCEVE = YOKAK_KURUMSAL_3_3;
|
|
@@ -265,7 +267,8 @@ const olgunlukDuzeyleri = arac({
|
|
|
265
267
|
const ozDegerlendirmeIskeleti = arac({
|
|
266
268
|
ad: "oz_degerlendirme_iskeleti",
|
|
267
269
|
baslik: "Öz değerlendirme raporu iskeleti",
|
|
268
|
-
aciklama: "KİDR 3.2.1
|
|
270
|
+
aciklama: "Öz değerlendirme raporunun (KİDR 3.2.1) bölümlerini, alt ölçütlerini ve gereken örnek kanıtları verir. Metin yazmaz; her bölüm EKSİK gelir.",
|
|
271
|
+
sonrakiAdim: "Hocanın yazdığı bölüm metnini rapor_dil_denetle ile denetleyin. Kanıtı olmayan cümle EKSİK kalır.",
|
|
269
272
|
girdi: z.object({
|
|
270
273
|
bolum: z
|
|
271
274
|
.enum(["A", "B", "C", "D"])
|
|
@@ -308,112 +311,15 @@ const ozDegerlendirmeIskeleti = arac({
|
|
|
308
311
|
};
|
|
309
312
|
},
|
|
310
313
|
});
|
|
311
|
-
// ---------------------------------------------------------------- Bologna denetimi
|
|
312
|
-
const sayiYaDaBos = z.number().nullable().default(null);
|
|
313
|
-
const BolognaDersGirdisi = z.object({
|
|
314
|
-
kod: z.string().trim().min(1).max(30),
|
|
315
|
-
ad: z.string().max(200).optional(),
|
|
316
|
-
zorunlu: z.boolean().default(true),
|
|
317
|
-
yariyil: z.number().int().min(1).max(16).nullable().default(null),
|
|
318
|
-
tul: z.string().max(20).optional().describe("Teori+Uygulama+Laboratuvar, ör. '2+1+0'"),
|
|
319
|
-
kredi: sayiYaDaBos,
|
|
320
|
-
akts: sayiYaDaBos,
|
|
321
|
-
guncelleme: z.string().max(20).optional().describe("Son güncelleme tarihi, GG.AA.YYYY"),
|
|
322
|
-
ciktilar: z
|
|
323
|
-
.array(z.object({ kod: z.string().max(20), metin: z.string().max(1000) }))
|
|
324
|
-
.max(40)
|
|
325
|
-
.default([]),
|
|
326
|
-
degerlendirme: z
|
|
327
|
-
.array(z.object({ ad: z.string().max(200), sayi: sayiYaDaBos, katki: sayiYaDaBos }))
|
|
328
|
-
.max(40)
|
|
329
|
-
.default([]),
|
|
330
|
-
isyuku: z
|
|
331
|
-
.array(z.object({ ad: z.string().max(200), sayi: sayiYaDaBos, sure: sayiYaDaBos, toplam: sayiYaDaBos }))
|
|
332
|
-
.max(40)
|
|
333
|
-
.default([]),
|
|
334
|
-
dersYapisi: z
|
|
335
|
-
.array(z.object({ alan: z.string().max(200), yuzde: sayiYaDaBos }))
|
|
336
|
-
.max(20)
|
|
337
|
-
.default([]),
|
|
338
|
-
haftalar: z.number().int().min(0).max(30).default(0).describe("Haftalık konu satırı sayısı"),
|
|
339
|
-
katki: z
|
|
340
|
-
.record(z.string().max(20), z.record(z.string().max(20), z.string().max(5)))
|
|
341
|
-
.default({})
|
|
342
|
-
.describe("Ders çıktısı ya da 'Tüm' satırı → program çıktısı kodu → katkı değeri ('1'-'5', '' ya da '-')"),
|
|
343
|
-
});
|
|
344
|
-
const bolognaDenetleAraci = arac({
|
|
345
|
-
ad: "bologna_denetle",
|
|
346
|
-
baslik: "Bologna ders bilgisini denetle",
|
|
347
|
-
aciklama: "Yapıştırdığınız ders bilgi paketi verisini (AKTS, iş yükü, değerlendirme, öğrenme çıktıları, katkı tablosu) Akredit'in Bologna kurallarıyla denetler: AKTS-iş yükü uyumu, değerlendirme toplamı, eksik çıktı, güncellik, matris tutarlılığı. Kurallar resmî ölçüt değildir; tutarsızlığı işaretler, kararı komisyon verir.",
|
|
348
|
-
girdi: z.object({
|
|
349
|
-
ders: BolognaDersGirdisi,
|
|
350
|
-
programCiktilari: z
|
|
351
|
-
.array(z.object({ kod: z.string().max(20), metin: z.string().max(1000) }))
|
|
352
|
-
.max(40)
|
|
353
|
-
.optional()
|
|
354
|
-
.describe("Program çıktıları; verilirse program düzeyindeki kurallar da çalışır"),
|
|
355
|
-
matrisSatiri: z
|
|
356
|
-
.record(z.string().max(20), z.string().max(5))
|
|
357
|
-
.optional()
|
|
358
|
-
.describe("Program matrisinde bu dersin satırı: program çıktısı kodu → değer"),
|
|
359
|
-
aktsSaat: z
|
|
360
|
-
.tuple([z.number().min(1), z.number().max(60)])
|
|
361
|
-
.optional()
|
|
362
|
-
.describe("AKTS başına saat aralığı; varsayılan [25, 30]"),
|
|
363
|
-
}),
|
|
364
|
-
calistir: ({ ders, programCiktilari, matrisSatiri, aktsSaat }, b) => {
|
|
365
|
-
const sayfa = {
|
|
366
|
-
...ders,
|
|
367
|
-
ad: ders.ad ?? ders.kod,
|
|
368
|
-
bilgiler: {},
|
|
369
|
-
};
|
|
370
|
-
const pkodlar = Object.keys(matrisSatiri ?? {});
|
|
371
|
-
const veri = {
|
|
372
|
-
adres: "kullanici-girdisi",
|
|
373
|
-
okundu: b.simdi().toISOString(),
|
|
374
|
-
programCiktilari: programCiktilari ?? [],
|
|
375
|
-
matris: {
|
|
376
|
-
pkodlar,
|
|
377
|
-
dersler: matrisSatiri
|
|
378
|
-
? [
|
|
379
|
-
{
|
|
380
|
-
kod: ders.kod,
|
|
381
|
-
ad: ders.ad ?? ders.kod,
|
|
382
|
-
zorunlu: ders.zorunlu,
|
|
383
|
-
grup: null,
|
|
384
|
-
yariyil: ders.yariyil,
|
|
385
|
-
grupBasligi: false,
|
|
386
|
-
degerler: matrisSatiri,
|
|
387
|
-
},
|
|
388
|
-
]
|
|
389
|
-
: [],
|
|
390
|
-
},
|
|
391
|
-
tyycIsaret: null,
|
|
392
|
-
dersler: [{ ...sayfa, zorunlu: ders.zorunlu, bos: false, kaynak: "kullanici-girdisi" }],
|
|
393
|
-
};
|
|
394
|
-
let bulgular = bolognaDenetle(veri, { simdi: b.simdi().getTime(), ...(aktsSaat ? { aktsSaat } : {}) });
|
|
395
|
-
// Program düzeyi kuralları yalnız program çıktıları verildiyse anlamlıdır.
|
|
396
|
-
if (!programCiktilari)
|
|
397
|
-
bulgular = bulgular.filter((x) => x.konu !== "-");
|
|
398
|
-
return {
|
|
399
|
-
sonuc: {
|
|
400
|
-
ders: ders.kod,
|
|
401
|
-
hataSayisi: bulgular.filter((x) => x.duzey === "hata").length,
|
|
402
|
-
uyariSayisi: bulgular.filter((x) => x.duzey === "uyari").length,
|
|
403
|
-
bulgular,
|
|
404
|
-
not: "Kurallar Akredit'in iç kurallarıdır, resmî ölçüt değildir. Düzeltme kararını ders sorumlusu ve komisyon verir.",
|
|
405
|
-
},
|
|
406
|
-
kaynak: [KOD_KAYNAGI("packages/cekirdek/src/bologna/denetim.ts", "Akredit Bologna denetim kuralları")],
|
|
407
|
-
};
|
|
408
|
-
},
|
|
409
|
-
});
|
|
410
314
|
// ---------------------------------------------------------------- ÇK/PÇ sağlanma hesabı
|
|
411
315
|
const kimlik = z.string().trim().min(1).max(30);
|
|
412
316
|
const ANONIM = /^(?![0-9]{7,}$)[\p{L}\p{N}_.-]{1,24}$/u;
|
|
413
317
|
const ckPcHesapla = arac({
|
|
414
318
|
ad: "ck_pc_hesapla",
|
|
319
|
+
kisiselVeriKapsami: "tam",
|
|
415
320
|
baslik: "ÇK ve PÇ sağlanma düzeyi hesabı",
|
|
416
|
-
aciklama: "
|
|
321
|
+
aciklama: "Takma adlı puan tablosundan ders öğrenme çıktısı (ÇK) başarısını ve program çıktısı (PÇ) sağlanma düzeyini hesaplar. Öğrenci adı ve numarası kabul edilmez; yalnız toplu sonuç döner.",
|
|
322
|
+
sonrakiAdim: "Sonucu tablo olarak gösterin, sayıları yalnız bu yanıttan alın. Eşiğin altında kalan çıktılar için hocaya sorun: 1) iyileştirme notu yaz 2) başka eşikle yeniden hesapla 3) bitir.",
|
|
417
323
|
girdi: z.object({
|
|
418
324
|
dersKodu: kimlik,
|
|
419
325
|
donem: z.string().trim().min(1).max(40).describe("ör. '2025-2026 Güz'"),
|
|
@@ -511,7 +417,8 @@ const ckPcHesapla = arac({
|
|
|
511
417
|
const raporDilDenetle = arac({
|
|
512
418
|
ad: "rapor_dil_denetle",
|
|
513
419
|
baslik: "Rapor dil denetimi",
|
|
514
|
-
aciklama: "
|
|
420
|
+
aciklama: "Rapor metnindeki dil sorunlarını işaretler: kanıtsız üstünlük, ölçüsüz nicelik, öznesiz eylem, dönem ve tarih tutarsızlığı. Metni değiştirmez.",
|
|
421
|
+
sonrakiAdim: "Her bulgu için 2-3 numaralı düzeltme seçeneği sunun (uydurma sayı ya da kanıt eklemeden); hoca seçince düzeltilmiş metni yeniden denetleyin.",
|
|
515
422
|
girdi: z.object({
|
|
516
423
|
metin: z.string().min(1).max(60_000),
|
|
517
424
|
donem: z
|
|
@@ -543,6 +450,12 @@ export const ACIK_ARACLAR = [
|
|
|
543
450
|
olgunlukDuzeyleri,
|
|
544
451
|
ozDegerlendirmeIskeleti,
|
|
545
452
|
bolognaDenetleAraci,
|
|
453
|
+
...BOLOGNA_ARACLARI,
|
|
454
|
+
kaynakBicimleAraci,
|
|
455
|
+
kaynakDogrulaAraci,
|
|
456
|
+
notTablosuAyristirAraci,
|
|
546
457
|
ckPcHesapla,
|
|
547
458
|
raporDilDenetle,
|
|
459
|
+
kurulumYardimiAraci,
|
|
460
|
+
engelCozAraci,
|
|
548
461
|
];
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { type Bulgu } from "../../../packages/cekirdek/src/index.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { type AcikArac } from "./temel.ts";
|
|
4
|
+
export declare const ALAN_KODLARI: readonly ["amac", "icerik", "yontem", "notlar", "onKosul", "ciktilar", "degerlendirme", "isyuku", "dersYapisi", "haftalar", "katki", "ska", "kaynaklar", "yetkililer"];
|
|
5
|
+
export type AlanKodu = (typeof ALAN_KODLARI)[number];
|
|
6
|
+
interface AlanBilgisi {
|
|
7
|
+
ad: string;
|
|
8
|
+
/** OBS düzenleme ekranındaki sekme (Proliz). */
|
|
9
|
+
sekme: string;
|
|
10
|
+
kurallar: string[];
|
|
11
|
+
sinir?: Record<string, number | string>;
|
|
12
|
+
kaliplar: string[];
|
|
13
|
+
yasaklar: string[];
|
|
14
|
+
/** MCP bu alanı taşıyabilir mi (kişisel veri sınırı). */
|
|
15
|
+
mcpTasir: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Akredit'in Bologna doldurma kuralları (packages/cekirdek/src/bologna/taslak.ts, apps/cli/skills/bologna-doldur). */
|
|
18
|
+
export declare const ALANLAR: Record<AlanKodu, AlanBilgisi>;
|
|
19
|
+
/** Bloom'un yenilenmiş sınıflaması düzeylerine göre örnek fiiller. Akredit örneğidir, resmî liste değildir. */
|
|
20
|
+
export declare const BLOOM_FIILLERI: {
|
|
21
|
+
duzey: string;
|
|
22
|
+
fiiller: string[];
|
|
23
|
+
}[];
|
|
24
|
+
/** Bir taslak bulgusunun hangi alana ait olduğu. "genel" birden çok alana değen bulgudur. */
|
|
25
|
+
export declare function bulguAlani(b: Bulgu): AlanKodu | "temel" | "genel";
|
|
26
|
+
declare const TaslakAlanlari: z.ZodObject<{
|
|
27
|
+
amac: z.ZodOptional<z.ZodObject<{
|
|
28
|
+
tr: z.ZodString;
|
|
29
|
+
en: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.core.$strip>>;
|
|
31
|
+
icerik: z.ZodOptional<z.ZodObject<{
|
|
32
|
+
tr: z.ZodString;
|
|
33
|
+
en: z.ZodOptional<z.ZodString>;
|
|
34
|
+
}, z.core.$strip>>;
|
|
35
|
+
yontem: z.ZodOptional<z.ZodObject<{
|
|
36
|
+
tr: z.ZodString;
|
|
37
|
+
en: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}, z.core.$strip>>;
|
|
39
|
+
notlar: z.ZodOptional<z.ZodObject<{
|
|
40
|
+
tr: z.ZodString;
|
|
41
|
+
en: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}, z.core.$strip>>;
|
|
43
|
+
onKosul: z.ZodOptional<z.ZodString>;
|
|
44
|
+
ciktilar: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
45
|
+
kod: z.ZodString;
|
|
46
|
+
tr: z.ZodString;
|
|
47
|
+
en: z.ZodOptional<z.ZodString>;
|
|
48
|
+
tur: z.ZodEnum<{
|
|
49
|
+
Bilgi: "Bilgi";
|
|
50
|
+
Beceri: "Beceri";
|
|
51
|
+
Yetkinlik: "Yetkinlik";
|
|
52
|
+
}>;
|
|
53
|
+
}, z.core.$strip>>>;
|
|
54
|
+
degerlendirme: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
55
|
+
ad: z.ZodString;
|
|
56
|
+
sayi: z.ZodNumber;
|
|
57
|
+
katki: z.ZodNumber;
|
|
58
|
+
}, z.core.$strip>>>;
|
|
59
|
+
isyuku: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
60
|
+
ad: z.ZodString;
|
|
61
|
+
sayi: z.ZodNumber;
|
|
62
|
+
sure: z.ZodNumber;
|
|
63
|
+
}, z.core.$strip>>>;
|
|
64
|
+
dersYapisi: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
65
|
+
alan: z.ZodString;
|
|
66
|
+
yuzde: z.ZodNumber;
|
|
67
|
+
}, z.core.$strip>>>;
|
|
68
|
+
haftalar: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
69
|
+
hafta: z.ZodNumber;
|
|
70
|
+
konu: z.ZodObject<{
|
|
71
|
+
tr: z.ZodString;
|
|
72
|
+
en: z.ZodOptional<z.ZodString>;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
onHazirlik: z.ZodString;
|
|
75
|
+
dokuman: z.ZodString;
|
|
76
|
+
}, z.core.$strip>>>;
|
|
77
|
+
katki: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodNull, z.ZodLiteral<"">]>>>>;
|
|
78
|
+
ska: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
79
|
+
kaynaklar: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
80
|
+
kaynakSayisi: z.ZodOptional<z.ZodNumber>;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
type TaslakAlanlariT = z.infer<typeof TaslakAlanlari>;
|
|
83
|
+
export interface Yetkili {
|
|
84
|
+
/** Sayfadaki etiket, ör. "Dersi Verenler". */
|
|
85
|
+
rol: string;
|
|
86
|
+
/** Sayfadaki değer, olduğu gibi. */
|
|
87
|
+
deger: string;
|
|
88
|
+
}
|
|
89
|
+
declare const DersTemeli: z.ZodObject<{
|
|
90
|
+
kod: z.ZodOptional<z.ZodString>;
|
|
91
|
+
ad: z.ZodOptional<z.ZodString>;
|
|
92
|
+
akts: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
tul: z.ZodOptional<z.ZodString>;
|
|
94
|
+
bolen: z.ZodDefault<z.ZodNumber>;
|
|
95
|
+
yetkililer: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
96
|
+
rol: z.ZodString;
|
|
97
|
+
deger: z.ZodString;
|
|
98
|
+
}, z.core.$strip>>>;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
type DersTemeliT = z.infer<typeof DersTemeli>;
|
|
101
|
+
/** Taslak alanlarını cekirdek kurallarıyla denetler; yalnız verilen alanların bulgularını alan alan döndürür. */
|
|
102
|
+
export declare function alanBulgulari(ders: DersTemeliT, alanlar: TaslakAlanlariT, s: {
|
|
103
|
+
ingilizce: boolean;
|
|
104
|
+
programCiktilari?: string[] | undefined;
|
|
105
|
+
}): Map<AlanKodu | "genel", Bulgu[]>;
|
|
106
|
+
/** Bütün sayılar burada hesaplanır; asistan toplam yazmaz (ilke 2). */
|
|
107
|
+
export declare function bolognaHesabi(ders: DersTemeliT, alanlar: TaslakAlanlariT): {
|
|
108
|
+
isyuku: {
|
|
109
|
+
satirlar: {
|
|
110
|
+
ad: string;
|
|
111
|
+
sayi: number;
|
|
112
|
+
sure: number;
|
|
113
|
+
toplam: number;
|
|
114
|
+
}[];
|
|
115
|
+
toplam: number;
|
|
116
|
+
hedef: number | null;
|
|
117
|
+
fark: number | null;
|
|
118
|
+
aktsBasinaSaat: number | null;
|
|
119
|
+
dersSuresiHaftalikBeklenen: number | null;
|
|
120
|
+
dersSuresiHaftalikVerilen: number | null;
|
|
121
|
+
aciklama: string;
|
|
122
|
+
} | null;
|
|
123
|
+
degerlendirmeToplami: number | null;
|
|
124
|
+
dersYapisiToplami: number | null;
|
|
125
|
+
ciktiSayisi: number | null;
|
|
126
|
+
haftaSayisi: number | null;
|
|
127
|
+
};
|
|
128
|
+
export declare const bolognaDenetleAraci: AcikArac<z.ZodObject<{
|
|
129
|
+
ders: z.ZodObject<{
|
|
130
|
+
kod: z.ZodString;
|
|
131
|
+
ad: z.ZodOptional<z.ZodString>;
|
|
132
|
+
zorunlu: z.ZodDefault<z.ZodBoolean>;
|
|
133
|
+
yariyil: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
134
|
+
tul: z.ZodOptional<z.ZodString>;
|
|
135
|
+
kredi: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
136
|
+
akts: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
137
|
+
guncelleme: z.ZodOptional<z.ZodString>;
|
|
138
|
+
amac: z.ZodOptional<z.ZodString>;
|
|
139
|
+
icerik: z.ZodOptional<z.ZodString>;
|
|
140
|
+
yontem: z.ZodOptional<z.ZodString>;
|
|
141
|
+
notlar: z.ZodOptional<z.ZodString>;
|
|
142
|
+
kaynakSayisi: z.ZodOptional<z.ZodNumber>;
|
|
143
|
+
kaynaklar: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
144
|
+
yetkililer: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
145
|
+
rol: z.ZodString;
|
|
146
|
+
deger: z.ZodString;
|
|
147
|
+
}, z.core.$strip>>>;
|
|
148
|
+
ciktilar: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
149
|
+
kod: z.ZodString;
|
|
150
|
+
metin: z.ZodString;
|
|
151
|
+
}, z.core.$strip>>>;
|
|
152
|
+
degerlendirme: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
153
|
+
ad: z.ZodString;
|
|
154
|
+
sayi: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
155
|
+
katki: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
156
|
+
}, z.core.$strip>>>;
|
|
157
|
+
isyuku: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
158
|
+
ad: z.ZodString;
|
|
159
|
+
sayi: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
160
|
+
sure: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
161
|
+
toplam: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
162
|
+
}, z.core.$strip>>>;
|
|
163
|
+
dersYapisi: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
164
|
+
alan: z.ZodString;
|
|
165
|
+
yuzde: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
166
|
+
}, z.core.$strip>>>;
|
|
167
|
+
haftalar: z.ZodDefault<z.ZodNumber>;
|
|
168
|
+
katki: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
169
|
+
}, z.core.$strip>;
|
|
170
|
+
programCiktilari: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
171
|
+
kod: z.ZodString;
|
|
172
|
+
metin: z.ZodString;
|
|
173
|
+
}, z.core.$strip>>>;
|
|
174
|
+
matrisSatiri: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
175
|
+
aktsSaat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
176
|
+
}, z.core.$strip>>;
|
|
177
|
+
/** Proliz sayfası mı: üst bilgi tablosu ("Yarıyıl, Kodu") ya da program çıktıları tablosu. */
|
|
178
|
+
export declare function prolizMi(html: string): boolean;
|
|
179
|
+
/**
|
|
180
|
+
* Yapıştırılan HTML'den görev satırlarını (Dersi Verenler, Yardımcılar, Koordinatör) yetkililer listesine, kaynak
|
|
181
|
+
* satırlarını künye listesine ayırır. Değerler olduğu gibi korunur; hiçbir şey atılmaz.
|
|
182
|
+
*/
|
|
183
|
+
export declare function bolognaSatirAyikla(html: string): {
|
|
184
|
+
html: string;
|
|
185
|
+
yetkililer: Yetkili[];
|
|
186
|
+
kaynaklar: string[];
|
|
187
|
+
};
|
|
188
|
+
/** bologna_ayristir ön ayıklaması: yalnız giriş bilgisi (oturum kimliği, parola kutusu, çerez) atılır. */
|
|
189
|
+
export declare function ayristirOnAyikla(g: unknown): {
|
|
190
|
+
girdi: unknown;
|
|
191
|
+
atilan: string[];
|
|
192
|
+
ileti?: string;
|
|
193
|
+
};
|
|
194
|
+
/** Hedefe tam eşit iş yükü dağılımları (deterministik). Son tek satır artığı alır, böylece toplam tam tutar. */
|
|
195
|
+
export declare function isYukuDagilimlari(akts: number, tul: string, hafta?: number, bolen?: number): {
|
|
196
|
+
secenek: number;
|
|
197
|
+
ad: string;
|
|
198
|
+
aciklama: string;
|
|
199
|
+
isyuku: {
|
|
200
|
+
ad: string;
|
|
201
|
+
sayi: number;
|
|
202
|
+
sure: number;
|
|
203
|
+
}[];
|
|
204
|
+
toplam: number;
|
|
205
|
+
hedef: number;
|
|
206
|
+
tamEsit: boolean;
|
|
207
|
+
}[];
|
|
208
|
+
export declare const BOLOGNA_ARACLARI: readonly AcikArac[];
|
|
209
|
+
export {};
|