@akredit/acik-mcp 0.1.0 → 0.5.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 +29 -114
- package/dist/apps/acik-mcp/src/bologna.d.ts +291 -0
- package/dist/apps/acik-mcp/src/bologna.js +1693 -0
- package/dist/apps/acik-mcp/src/genel-ayristir.d.ts +92 -0
- package/dist/apps/acik-mcp/src/genel-ayristir.js +489 -0
- package/dist/apps/acik-mcp/src/http.d.ts +31 -3
- package/dist/apps/acik-mcp/src/http.js +90 -17
- package/dist/apps/acik-mcp/src/index.d.ts +7 -0
- package/dist/apps/acik-mcp/src/index.js +7 -0
- package/dist/apps/acik-mcp/src/kaynak-dogrula.d.ts +94 -0
- package/dist/apps/acik-mcp/src/kaynak-dogrula.js +460 -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 +16 -2
- package/dist/apps/acik-mcp/src/kisisel-veri.js +78 -15
- package/dist/apps/acik-mcp/src/not-tablosu.d.ts +39 -0
- package/dist/apps/acik-mcp/src/not-tablosu.js +268 -0
- package/dist/apps/acik-mcp/src/promptlar.d.ts +48 -0
- package/dist/apps/acik-mcp/src/promptlar.js +323 -0
- package/dist/apps/acik-mcp/src/sunucu.d.ts +12 -4
- package/dist/apps/acik-mcp/src/sunucu.js +108 -24
- package/dist/apps/acik-mcp/src/temel.d.ts +59 -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 +381 -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/dist/packages/cekirdek/src/bologna/taslak.d.ts +19 -3
- package/dist/packages/cekirdek/src/bologna/taslak.js +70 -9
- package/dist/packages/cekirdek/src/turler.d.ts +8 -0
- package/package.json +5 -3
|
@@ -0,0 +1,291 @@
|
|
|
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 KaynakOgesi: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
27
|
+
kunye: z.ZodString;
|
|
28
|
+
dogrulama: z.ZodUnion<readonly [z.ZodLiteral<"hoca_beyani">, z.ZodObject<{
|
|
29
|
+
durum: z.ZodString;
|
|
30
|
+
baglanti: z.ZodString;
|
|
31
|
+
imza: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, z.core.$strip>]>;
|
|
33
|
+
}, z.core.$strip>]>;
|
|
34
|
+
export type KaynakOgesiT = z.infer<typeof KaynakOgesi>;
|
|
35
|
+
export type KaynakDurumu = "katalogda_bulundu" | "hoca_beyani" | "dogrulanmamis";
|
|
36
|
+
/** Kaynağın doğrulama durumu. Düz metin ya da imzası bu sürece ait olmayan kayıt doğrulanmamıştır. */
|
|
37
|
+
export declare function kaynakDurumu(k: KaynakOgesiT): KaynakDurumu;
|
|
38
|
+
export declare const kunyeMetni: (k: KaynakOgesiT) => string;
|
|
39
|
+
declare const TaslakAlanlari: z.ZodObject<{
|
|
40
|
+
amac: z.ZodOptional<z.ZodObject<{
|
|
41
|
+
tr: z.ZodString;
|
|
42
|
+
en: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$strip>>;
|
|
44
|
+
icerik: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
tr: z.ZodString;
|
|
46
|
+
en: z.ZodOptional<z.ZodString>;
|
|
47
|
+
}, z.core.$strip>>;
|
|
48
|
+
yontem: z.ZodOptional<z.ZodObject<{
|
|
49
|
+
tr: z.ZodString;
|
|
50
|
+
en: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$strip>>;
|
|
52
|
+
notlar: z.ZodOptional<z.ZodObject<{
|
|
53
|
+
tr: z.ZodString;
|
|
54
|
+
en: z.ZodOptional<z.ZodString>;
|
|
55
|
+
}, z.core.$strip>>;
|
|
56
|
+
onKosul: z.ZodOptional<z.ZodString>;
|
|
57
|
+
ciktilar: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
58
|
+
kod: z.ZodString;
|
|
59
|
+
tr: z.ZodString;
|
|
60
|
+
en: z.ZodOptional<z.ZodString>;
|
|
61
|
+
tur: z.ZodEnum<{
|
|
62
|
+
Bilgi: "Bilgi";
|
|
63
|
+
Beceri: "Beceri";
|
|
64
|
+
Yetkinlik: "Yetkinlik";
|
|
65
|
+
}>;
|
|
66
|
+
}, z.core.$strip>>>;
|
|
67
|
+
degerlendirme: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
68
|
+
ad: z.ZodString;
|
|
69
|
+
sayi: z.ZodNumber;
|
|
70
|
+
katki: z.ZodNumber;
|
|
71
|
+
}, z.core.$strip>>>;
|
|
72
|
+
isyuku: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
73
|
+
ad: z.ZodString;
|
|
74
|
+
sayi: z.ZodNumber;
|
|
75
|
+
sure: z.ZodNumber;
|
|
76
|
+
}, z.core.$strip>>>;
|
|
77
|
+
dersYapisi: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
78
|
+
alan: z.ZodString;
|
|
79
|
+
yuzde: z.ZodNumber;
|
|
80
|
+
}, z.core.$strip>>>;
|
|
81
|
+
haftalar: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
82
|
+
hafta: z.ZodNumber;
|
|
83
|
+
konu: z.ZodObject<{
|
|
84
|
+
tr: z.ZodString;
|
|
85
|
+
en: z.ZodOptional<z.ZodString>;
|
|
86
|
+
}, z.core.$strip>;
|
|
87
|
+
onHazirlik: z.ZodString;
|
|
88
|
+
dokuman: z.ZodString;
|
|
89
|
+
}, z.core.$strip>>>;
|
|
90
|
+
katki: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodNull, z.ZodLiteral<"">]>>>>;
|
|
91
|
+
ska: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
92
|
+
degerlendirmeDayanagi: z.ZodOptional<z.ZodEnum<{
|
|
93
|
+
sayfa: "sayfa";
|
|
94
|
+
oneri: "oneri";
|
|
95
|
+
hoca: "hoca";
|
|
96
|
+
}>>;
|
|
97
|
+
kaynaklar: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
98
|
+
kunye: z.ZodString;
|
|
99
|
+
dogrulama: z.ZodUnion<readonly [z.ZodLiteral<"hoca_beyani">, z.ZodObject<{
|
|
100
|
+
durum: z.ZodString;
|
|
101
|
+
baglanti: z.ZodString;
|
|
102
|
+
imza: z.ZodOptional<z.ZodString>;
|
|
103
|
+
}, z.core.$strip>]>;
|
|
104
|
+
}, z.core.$strip>]>>>;
|
|
105
|
+
kaynakSayisi: z.ZodOptional<z.ZodNumber>;
|
|
106
|
+
}, z.core.$strip>;
|
|
107
|
+
type TaslakAlanlariT = z.infer<typeof TaslakAlanlari>;
|
|
108
|
+
export interface Yetkili {
|
|
109
|
+
/** Sayfadaki etiket, ör. "Dersi Verenler". */
|
|
110
|
+
rol: string;
|
|
111
|
+
/** Sayfadaki değer, olduğu gibi. */
|
|
112
|
+
deger: string;
|
|
113
|
+
}
|
|
114
|
+
declare const DersTemeli: z.ZodObject<{
|
|
115
|
+
kod: z.ZodOptional<z.ZodString>;
|
|
116
|
+
ad: z.ZodOptional<z.ZodString>;
|
|
117
|
+
akts: z.ZodOptional<z.ZodNumber>;
|
|
118
|
+
tul: z.ZodOptional<z.ZodString>;
|
|
119
|
+
bolen: z.ZodOptional<z.ZodNumber>;
|
|
120
|
+
donem: z.ZodOptional<z.ZodString>;
|
|
121
|
+
yetkililer: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
122
|
+
rol: z.ZodString;
|
|
123
|
+
deger: z.ZodString;
|
|
124
|
+
}, z.core.$strip>>>;
|
|
125
|
+
}, z.core.$strip>;
|
|
126
|
+
type DersTemeliT = z.infer<typeof DersTemeli>;
|
|
127
|
+
/** Taslak alanlarını cekirdek kurallarıyla denetler; yalnız verilen alanların bulgularını alan alan döndürür. */
|
|
128
|
+
export declare function alanBulgulari(ders: DersTemeliT, alanlar: TaslakAlanlariT, s: {
|
|
129
|
+
ingilizce: boolean;
|
|
130
|
+
programCiktilari?: string[] | undefined;
|
|
131
|
+
}): Map<AlanKodu | "genel", Bulgu[]>;
|
|
132
|
+
/** Bütün sayılar burada hesaplanır; asistan toplam yazmaz (ilke 2). */
|
|
133
|
+
export declare function bolognaHesabi(ders: DersTemeliT, alanlar: TaslakAlanlariT): {
|
|
134
|
+
isyuku: {
|
|
135
|
+
satirlar: {
|
|
136
|
+
ad: string;
|
|
137
|
+
sayi: number;
|
|
138
|
+
sure: number;
|
|
139
|
+
toplam: number;
|
|
140
|
+
}[];
|
|
141
|
+
toplam: number;
|
|
142
|
+
hedef: number | null;
|
|
143
|
+
hedefAraligi: [number, number] | null;
|
|
144
|
+
aralikta: boolean | null;
|
|
145
|
+
fark: number | null;
|
|
146
|
+
aktsBasinaSaat: number | null;
|
|
147
|
+
dersSuresiHaftalikBeklenen: number | null;
|
|
148
|
+
dersSuresiHaftalikVerilen: number | null;
|
|
149
|
+
aciklama: string;
|
|
150
|
+
} | null;
|
|
151
|
+
degerlendirmeToplami: number | null;
|
|
152
|
+
dersYapisiToplami: number | null;
|
|
153
|
+
ciktiSayisi: number | null;
|
|
154
|
+
haftaSayisi: number | null;
|
|
155
|
+
};
|
|
156
|
+
export declare const bolognaDenetleAraci: AcikArac<z.ZodObject<{
|
|
157
|
+
ders: z.ZodObject<{
|
|
158
|
+
kod: z.ZodString;
|
|
159
|
+
ad: z.ZodOptional<z.ZodString>;
|
|
160
|
+
zorunlu: z.ZodDefault<z.ZodBoolean>;
|
|
161
|
+
yariyil: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
162
|
+
tul: z.ZodOptional<z.ZodString>;
|
|
163
|
+
kredi: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
164
|
+
akts: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
165
|
+
guncelleme: z.ZodOptional<z.ZodString>;
|
|
166
|
+
amac: z.ZodOptional<z.ZodString>;
|
|
167
|
+
icerik: z.ZodOptional<z.ZodString>;
|
|
168
|
+
yontem: z.ZodOptional<z.ZodString>;
|
|
169
|
+
notlar: z.ZodOptional<z.ZodString>;
|
|
170
|
+
kaynakSayisi: z.ZodOptional<z.ZodNumber>;
|
|
171
|
+
kaynaklar: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
172
|
+
yetkililer: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
173
|
+
rol: z.ZodString;
|
|
174
|
+
deger: z.ZodString;
|
|
175
|
+
}, z.core.$strip>>>;
|
|
176
|
+
ciktilar: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
177
|
+
kod: z.ZodString;
|
|
178
|
+
metin: z.ZodString;
|
|
179
|
+
}, z.core.$strip>>>;
|
|
180
|
+
degerlendirme: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
181
|
+
ad: z.ZodString;
|
|
182
|
+
sayi: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
183
|
+
katki: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
184
|
+
}, z.core.$strip>>>;
|
|
185
|
+
isyuku: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
186
|
+
ad: z.ZodString;
|
|
187
|
+
sayi: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
188
|
+
sure: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
189
|
+
toplam: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
190
|
+
}, z.core.$strip>>>;
|
|
191
|
+
dersYapisi: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
192
|
+
alan: z.ZodString;
|
|
193
|
+
yuzde: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
194
|
+
}, z.core.$strip>>>;
|
|
195
|
+
haftalar: z.ZodDefault<z.ZodNumber>;
|
|
196
|
+
katki: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
|
|
197
|
+
}, z.core.$strip>;
|
|
198
|
+
programCiktilari: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
199
|
+
kod: z.ZodString;
|
|
200
|
+
metin: z.ZodString;
|
|
201
|
+
}, z.core.$strip>>>;
|
|
202
|
+
matrisSatiri: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
203
|
+
aktsSaat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
204
|
+
kurumBoleni: z.ZodOptional<z.ZodNumber>;
|
|
205
|
+
}, z.core.$strip>>;
|
|
206
|
+
/** Proliz sayfası mı: üst bilgi tablosu ("Yarıyıl, Kodu") ya da program çıktıları tablosu. */
|
|
207
|
+
export declare function prolizMi(html: string): boolean;
|
|
208
|
+
/**
|
|
209
|
+
* Yapıştırılan HTML'den görev satırlarını (Dersi Verenler, Yardımcılar, Koordinatör) yetkililer listesine, kaynak
|
|
210
|
+
* satırlarını künye listesine ayırır. Değerler olduğu gibi korunur; hiçbir şey atılmaz.
|
|
211
|
+
*/
|
|
212
|
+
export declare function bolognaSatirAyikla(html: string): {
|
|
213
|
+
html: string;
|
|
214
|
+
yetkililer: Yetkili[];
|
|
215
|
+
kaynaklar: string[];
|
|
216
|
+
};
|
|
217
|
+
/** bologna_ayristir ön ayıklaması: yalnız giriş bilgisi (oturum kimliği, parola kutusu, çerez) atılır. */
|
|
218
|
+
export declare function ayristirOnAyikla(g: unknown): {
|
|
219
|
+
girdi: unknown;
|
|
220
|
+
atilan: string[];
|
|
221
|
+
ileti?: string;
|
|
222
|
+
};
|
|
223
|
+
export interface DegerlendirmeKalemi {
|
|
224
|
+
ad: string;
|
|
225
|
+
sayi?: number | null | undefined;
|
|
226
|
+
katki?: number | null | undefined;
|
|
227
|
+
}
|
|
228
|
+
interface Etkinlik {
|
|
229
|
+
ad: string;
|
|
230
|
+
sayi: number;
|
|
231
|
+
agirlik: number;
|
|
232
|
+
kaynak: string;
|
|
233
|
+
}
|
|
234
|
+
/** Değerlendirme kalemlerini iş yükü etkinliklerine çevirir. Eşleşmeyen kalem satır üretmez. */
|
|
235
|
+
export declare function etkinliklereCevir(deg: readonly DegerlendirmeKalemi[]): Etkinlik[];
|
|
236
|
+
export interface IsYukuSatiri {
|
|
237
|
+
ad: string;
|
|
238
|
+
sayi: number;
|
|
239
|
+
sure: number;
|
|
240
|
+
/** Değerin nereden geldiği: "sayfa (T+U+L)", "Değerlendirme kalemi: ..." ya da "Akredit önerisi". */
|
|
241
|
+
kaynak: string;
|
|
242
|
+
/** Hesabın varsayımı; hoca teyit eder. */
|
|
243
|
+
varsayim: string;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* İş yükü dağılım önerileri (deterministik). Satırlar yalnız ders süresi, haftalık çalışma ve verilen değerlendirme
|
|
247
|
+
* kalemlerinden kurulur. Kurum değeri (bolen) verildiyse toplam tam AKTS × bolen olmaya çalışılır; verilmediyse
|
|
248
|
+
* AKTS × 30 hedeflenir ve AKTS başına 25-30 saat aralığı kabul edilir.
|
|
249
|
+
*/
|
|
250
|
+
export declare function isYukuDagilimlari(akts: number, tul: string, hafta?: number, bolen?: number, degerlendirme?: readonly DegerlendirmeKalemi[]): {
|
|
251
|
+
secenek: number;
|
|
252
|
+
ad: string;
|
|
253
|
+
aciklama: string;
|
|
254
|
+
etiket: string;
|
|
255
|
+
isyuku: IsYukuSatiri[];
|
|
256
|
+
toplam: number;
|
|
257
|
+
hedef: number;
|
|
258
|
+
kabulAraligi: [number, number];
|
|
259
|
+
tamEsit: boolean;
|
|
260
|
+
aralikta: boolean;
|
|
261
|
+
}[];
|
|
262
|
+
/**
|
|
263
|
+
* OBS'ye yazılan alanları geri okunan sayfa metniyle karşılaştırır. Ders kodu ya da dönem farklıysa durur:
|
|
264
|
+
* yanlış derse yazılmış olabilir.
|
|
265
|
+
*/
|
|
266
|
+
export declare function obsKarsilastir(g: {
|
|
267
|
+
dersKodu: string;
|
|
268
|
+
donem?: string | undefined;
|
|
269
|
+
beklenen: {
|
|
270
|
+
alan: string;
|
|
271
|
+
deger: string;
|
|
272
|
+
}[];
|
|
273
|
+
geriOkunan: {
|
|
274
|
+
metin: string;
|
|
275
|
+
dersKodu?: string | undefined;
|
|
276
|
+
donem?: string | undefined;
|
|
277
|
+
};
|
|
278
|
+
}): {
|
|
279
|
+
dur: boolean;
|
|
280
|
+
nedenler: string[];
|
|
281
|
+
eslesen: number;
|
|
282
|
+
farkli: number;
|
|
283
|
+
alanlar: {
|
|
284
|
+
alan: string;
|
|
285
|
+
durum: "bos" | "farkli" | "eslesti";
|
|
286
|
+
eksikParcalar: string[];
|
|
287
|
+
eksikParcaSayisi: number;
|
|
288
|
+
}[];
|
|
289
|
+
};
|
|
290
|
+
export declare const BOLOGNA_ARACLARI: readonly AcikArac[];
|
|
291
|
+
export {};
|