§01
Umumiy ko'rinish
- Bu nima: Asterisk'dagi qo'ng'iroq markazi qo'ng'iroqlarini tanlab QA qilish uchun kichik ops-utilita.
tg_invoice_listenernomi chalg'ituvchi (ehtimolbun initmerosi yoki qayta nomlash natijasi) — kodga ko'ra bu "qo'ng'iroq yozuvlarini QA uchun tanlovchi → Telegram". - Turi / holati / roli: cli / ops-skript · prototype · solo (foydalanuvchi tomonidan 1 ta kommit).
- Faollik davri: 2026-04-18 (bir kun, 1 ta kommit).
§02
Stek
- Bun + TypeScript, TASHQI bog'liqliklarsiz — faqat Bun'ning ichki vositalari:
Bun.$(shell),Bun.file,Bun.env, nativefetch/FormData. Parol orqali SSH/SCP uchun tizimsshpass. - Ma'lumot manbai: Asterisk CDR (
asteriskcdrdbMySQL), yozuv fayllari/var/spool/asterisk/monitor/YYYY/MM/DD/ostida. - Yetkazib berish: Telegram Bot API (
sendAudio, multipart FormData). - Konfiguratsiya env orqali (SSH host/user/password, TG token/chat, lookback/sampling parametrlari).
§03
Nima qilindi
- Bitta kommit (2026-04-18): to'liq ishlaydigan
index.tsskript (176 satr). - Mantiq:
fetchCandidates()(CDR bo'yicha SQL: ANSWERED, billsec ≥ chegara, yozuv mavjud,GROUP BY recordingfile,ORDER BY RAND() LIMIT),pickCount()(tasodifiy 10–15), vaqtinchalik papkaga SCP orqali yuklab olish, formatlangan izohlisendAudio(),finally'da tmp tozalash, natijaga asoslangan chiqish kodi.
§04
Texnik chellenjlar
index.ts bilan tasdiqlangan:
- Parol orqali SSH/SCP avtomatlashtirish (
sshpass -e+ qat'iy-oopsiyalar: host-key tekshiruvi o'chirilgan, faqat parol-autentifikatsiya, timeout): kalitlarsiz masofaviy PBX'ga kirish. → amaliy ops-integratsiya. - QA uchun tasodifiy sampling (
ORDER BY RAND()+pickCount10–15): barcha yozuvlar o'rniga vakillik namunasi. → puxta o'ylangan QA yondashuvi. - Bun'ning ichki vositalarida zero-dependency (
Bun.$,Bun.file, native fetch/FormData): node_modules bog'liqliklarisiz, barcha I/O Bun runtime orqali. → zamonaviy, yengil uslub. - Resurslar va xatolarga ehtiyotkorlik: PID+timestamp bilan vaqtinchalik papka,
finally'da kafolatlangan tozalash, har bir fayl uchun try/catch, mazmunli chiqish kodi (agar hech narsa yuborilmasa — fail). → cron ishga tushishlar uchun ishonchlilik. - `requireEnv` yo'q o'zgaruvchida aniq xato bilan. → fail-fast konfiguratsiya.
§05
AI yordamida ishlab chiqish
- Topilgan sessiyalar: 0. Repo'da
.claude/(CLAUDE.md'da Bun bo'yicha qo'llanma bilan) va.cursor/bor — AI vositalari ishlatilgan, ammo Claude Code transkriptlari yo'q. - AI bilan nima qilingan: ehtimol Cursor/Claude bilan yaratilgan/sayqallangan (CLAUDE.md standart Bun qo'llanmasi).
- AI-vorkflow patternlari: minimal ma'lumot.
§06
Yutuqlar va metrikalar
- Ishlaydigan ops-utilita: Asterisk CDR → SCP → Telegram, ~176 satr, zero deps.
- Sozlanadigan sampling, xavfsiz tozalash, cron uchun tayyorlik.