4 talep → 2 onay bekleyen taslak
REQ-001 · Sunum taslağını kontrol et
REQ-002 · Kaynak bağlantılarını gözden geçir
1 tekrar atlandı · 1 geçersiz kayıt ayrıldı
ÇALIŞTIRILAN ÖRNEK VE KAYNAK KODU
Bu oturumda çalıştırılan saf dönüşüm; herhangi bir gerçek mesaj gönderilmedi.
ÖRNEK GİRDİ VE GERÇEK ÇIKTI
{
"input": [
{
"id": "REQ-001",
"title": "Sunum taslağını kontrol et",
"priority": "normal"
},
{
"id": "REQ-001",
"title": "Yeniden gelen aynı talep",
"priority": "normal"
},
{
"id": "REQ-002",
"title": "Kaynak bağlantılarını gözden geçir",
"priority": "high"
},
{
"id": "REQ-003",
"title": "xx",
"priority": "normal"
}
],
"result": {
"queue": [
{
"id": "REQ-001",
"title": "Sunum taslağını kontrol et",
"priority": "normal",
"state": "awaiting_approval",
"requiresApproval": true
},
{
"id": "REQ-002",
"title": "Kaynak bağlantılarını gözden geçir",
"priority": "high",
"state": "awaiting_approval",
"requiresApproval": true
}
],
"rejected": [
{
"index": 3,
"reason": "Kimlik, başlık veya öncelik geçersiz."
}
],
"duplicates": 1
}
}
KAYNAK KODU — review_queue.mjs
// A pure transformation example: no network calls, delivery or persistent queue.
export function prepareReviewQueue(events) {
if (!Array.isArray(events) || events.length > 100) throw new Error('En fazla 100 talep gönder.');
const queue = [], rejected = [], seen = new Set();
let duplicates = 0;
for (let index = 0; index < events.length; index++) {
const event = events[index];
if (!event || typeof event !== 'object' || Array.isArray(event) ||
typeof event.id !== 'string' || !/^REQ-[0-9]{3}$/.test(event.id) ||
typeof event.title !== 'string' || event.title.trim().length < 5 || event.title.length > 180 ||
!['normal', 'high'].includes(event.priority)) {
rejected.push({ index, reason: 'Kimlik, başlık veya öncelik geçersiz.' });
continue;
}
if (seen.has(event.id)) { duplicates++; continue; }
seen.add(event.id);
queue.push({ id: event.id, title: event.title.trim(), priority: event.priority,
state: 'awaiting_approval', requiresApproval: true });
}
return { queue, rejected, duplicates };
}