@akredit/acik-mcp 0.4.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 +5 -5
- package/dist/apps/acik-mcp/src/araclar.js +2 -0
- package/dist/apps/acik-mcp/src/bologna.d.ts +91 -9
- package/dist/apps/acik-mcp/src/bologna.js +477 -105
- package/dist/apps/acik-mcp/src/genel-ayristir.d.ts +10 -1
- package/dist/apps/acik-mcp/src/genel-ayristir.js +85 -7
- package/dist/apps/acik-mcp/src/http.d.ts +31 -3
- package/dist/apps/acik-mcp/src/http.js +86 -15
- package/dist/apps/acik-mcp/src/index.d.ts +1 -0
- package/dist/apps/acik-mcp/src/index.js +1 -0
- package/dist/apps/acik-mcp/src/kaynak-dogrula.d.ts +51 -4
- package/dist/apps/acik-mcp/src/kaynak-dogrula.js +199 -58
- package/dist/apps/acik-mcp/src/kisisel-veri.d.ts +3 -1
- package/dist/apps/acik-mcp/src/kisisel-veri.js +24 -9
- package/dist/apps/acik-mcp/src/not-tablosu.d.ts +6 -0
- package/dist/apps/acik-mcp/src/not-tablosu.js +40 -15
- package/dist/apps/acik-mcp/src/promptlar.d.ts +23 -0
- package/dist/apps/acik-mcp/src/promptlar.js +98 -28
- package/dist/apps/acik-mcp/src/sunucu.d.ts +1 -1
- package/dist/apps/acik-mcp/src/sunucu.js +10 -5
- package/dist/apps/acik-mcp/src/temel.d.ts +5 -0
- package/dist/apps/acik-mcp/src/yardim.js +28 -18
- 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 +2 -2
package/README.md
CHANGED
|
@@ -62,7 +62,7 @@ Sunucu model çağırmaz ve metin üretmez. Bologna seçeneklerini sizin asistan
|
|
|
62
62
|
|
|
63
63
|
```
|
|
64
64
|
Hoca: akredit
|
|
65
|
-
Asistan:
|
|
65
|
+
Asistan: Neye odaklanalım? 1) Bologna paketi 2) Öğrenme çıktısı 3) ÇK/PÇ 4) Ölçüt rehberi 5) Dil denetimi
|
|
66
66
|
Hoca: 1
|
|
67
67
|
Asistan: Önce bir kural: kullanıcı adınızı ve parolanızı yalnız OBS'nin kendi ekranına, kendiniz yazın.
|
|
68
68
|
Bana asla yazmayın. OBS adresiniz nedir?
|
|
@@ -96,13 +96,13 @@ Asistan: Sayfayı yeniden okudum ve denetledim: Tamamlandı.
|
|
|
96
96
|
|
|
97
97
|
- Bütün araçlar salt okumadır ve aynı girdiye aynı sonucu verir.
|
|
98
98
|
- Hesap ve anahtar gerekmez. Kurum verisine erişmez, hiçbir yere yazmaz, yapay zekâ modeli çağırmaz.
|
|
99
|
-
- Giriş bilgisi
|
|
99
|
+
- Giriş bilgisi istenmez: parola, doğrulama kodu ya da oturum çerezi görülürse çağrı reddedilir, değer kaydedilmez ve 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.
|
|
100
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.
|
|
101
101
|
- Sayılar yalnız hesaptan gelir; araçlar metin uydurmaz.
|
|
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
|
|
103
|
-
- Öğrenci verisi
|
|
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 giriş bilgisi, T.C. kimlik numarası, öğrenci numarası ve IBAN reddedilir; yayımlanmış öğretim elemanı adları serbesttir.
|
|
103
|
+
- Öğrenci verisi sohbete yapıştırılmaz: tablo sohbete yapıştırıldığı anda yapay zekâ sağlayıcısına gitmiştir. `not_tablosu_ayristir` ad, soyad ya da numara sütunu ya da 9-11 haneli numara görürse tabloyu işlemez; hocadan bu sütunları Excel'de silmesini ya da verinin tarayıcıdan çıkmadığı https://akredit.org/deneyin hesaplayıcısını kullanmasını ister. Öbür araçlarda T.C. kimlik numarası, öğrenci numarası ve IBAN reddedilir.
|
|
104
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
|
|
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 arar ve yalnız katalogda bulunanı bağlantısıyla öneri olarak gösterir; uygunluğa hoca karar verir. Katalogda olmayan eser yalnız hoca beyanıyla yazılır. Bologna araçları düz metin ya da imzasız kaynağı doğrulanmamış sayar ve OBS yazma paketine almaz.
|
|
106
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
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.
|
|
108
108
|
|
|
@@ -10,6 +10,7 @@ import { BOLOGNA_ARACLARI, bolognaDenetleAraci } from "./bologna.js";
|
|
|
10
10
|
import { kaynakBicimleAraci } from "./kaynak.js";
|
|
11
11
|
import { kaynakDogrulaAraci } from "./kaynak-dogrula.js";
|
|
12
12
|
import { notTablosuAyristirAraci } from "./not-tablosu.js";
|
|
13
|
+
import { akreditBaslaAraci } from "./promptlar.js";
|
|
13
14
|
import { AracHatasi, arac, DEPO, KOD_KAYNAGI } from "./temel.js";
|
|
14
15
|
import { engelCozAraci, kurulumYardimiAraci } from "./yardim.js";
|
|
15
16
|
export * from "./temel.js";
|
|
@@ -445,6 +446,7 @@ const raporDilDenetle = arac({
|
|
|
445
446
|
},
|
|
446
447
|
});
|
|
447
448
|
export const ACIK_ARACLAR = [
|
|
449
|
+
akreditBaslaAraci,
|
|
448
450
|
olcutAra,
|
|
449
451
|
olcutGetir,
|
|
450
452
|
olgunlukDuzeyleri,
|
|
@@ -23,6 +23,19 @@ export declare const BLOOM_FIILLERI: {
|
|
|
23
23
|
}[];
|
|
24
24
|
/** Bir taslak bulgusunun hangi alana ait olduğu. "genel" birden çok alana değen bulgudur. */
|
|
25
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;
|
|
26
39
|
declare const TaslakAlanlari: z.ZodObject<{
|
|
27
40
|
amac: z.ZodOptional<z.ZodObject<{
|
|
28
41
|
tr: z.ZodString;
|
|
@@ -76,7 +89,19 @@ declare const TaslakAlanlari: z.ZodObject<{
|
|
|
76
89
|
}, z.core.$strip>>>;
|
|
77
90
|
katki: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodNumber, z.ZodNull, z.ZodLiteral<"">]>>>>;
|
|
78
91
|
ska: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
79
|
-
|
|
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>]>>>;
|
|
80
105
|
kaynakSayisi: z.ZodOptional<z.ZodNumber>;
|
|
81
106
|
}, z.core.$strip>;
|
|
82
107
|
type TaslakAlanlariT = z.infer<typeof TaslakAlanlari>;
|
|
@@ -91,7 +116,8 @@ declare const DersTemeli: z.ZodObject<{
|
|
|
91
116
|
ad: z.ZodOptional<z.ZodString>;
|
|
92
117
|
akts: z.ZodOptional<z.ZodNumber>;
|
|
93
118
|
tul: z.ZodOptional<z.ZodString>;
|
|
94
|
-
bolen: z.
|
|
119
|
+
bolen: z.ZodOptional<z.ZodNumber>;
|
|
120
|
+
donem: z.ZodOptional<z.ZodString>;
|
|
95
121
|
yetkililer: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
96
122
|
rol: z.ZodString;
|
|
97
123
|
deger: z.ZodString;
|
|
@@ -114,6 +140,8 @@ export declare function bolognaHesabi(ders: DersTemeliT, alanlar: TaslakAlanlari
|
|
|
114
140
|
}[];
|
|
115
141
|
toplam: number;
|
|
116
142
|
hedef: number | null;
|
|
143
|
+
hedefAraligi: [number, number] | null;
|
|
144
|
+
aralikta: boolean | null;
|
|
117
145
|
fark: number | null;
|
|
118
146
|
aktsBasinaSaat: number | null;
|
|
119
147
|
dersSuresiHaftalikBeklenen: number | null;
|
|
@@ -173,6 +201,7 @@ export declare const bolognaDenetleAraci: AcikArac<z.ZodObject<{
|
|
|
173
201
|
}, z.core.$strip>>>;
|
|
174
202
|
matrisSatiri: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
175
203
|
aktsSaat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
204
|
+
kurumBoleni: z.ZodOptional<z.ZodNumber>;
|
|
176
205
|
}, z.core.$strip>>;
|
|
177
206
|
/** Proliz sayfası mı: üst bilgi tablosu ("Yarıyıl, Kodu") ya da program çıktıları tablosu. */
|
|
178
207
|
export declare function prolizMi(html: string): boolean;
|
|
@@ -191,19 +220,72 @@ export declare function ayristirOnAyikla(g: unknown): {
|
|
|
191
220
|
atilan: string[];
|
|
192
221
|
ileti?: string;
|
|
193
222
|
};
|
|
194
|
-
|
|
195
|
-
|
|
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[]): {
|
|
196
251
|
secenek: number;
|
|
197
252
|
ad: string;
|
|
198
253
|
aciklama: string;
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
sayi: number;
|
|
202
|
-
sure: number;
|
|
203
|
-
}[];
|
|
254
|
+
etiket: string;
|
|
255
|
+
isyuku: IsYukuSatiri[];
|
|
204
256
|
toplam: number;
|
|
205
257
|
hedef: number;
|
|
258
|
+
kabulAraligi: [number, number];
|
|
206
259
|
tamEsit: boolean;
|
|
260
|
+
aralikta: boolean;
|
|
207
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
|
+
};
|
|
208
290
|
export declare const BOLOGNA_ARACLARI: readonly AcikArac[];
|
|
209
291
|
export {};
|