Texno Karvon
Bosh sahifa

Yakuniy Loyiha Spetsifikatsiyasi: "Ariza Tizimi"

Modul 7 ning topshiriq hujjati. 7.1 darsdan oldin o‘qib chiqing.

1. Mahsulot tavsifi

Kursga yoki xizmatga onlayn ariza qabul qiladigan, to‘lovni o‘tkazadigan va operatorga boshqaruv beradigan tizim.

Foydalanuvchilar:

RolKanalNima qiladi
ArizachiTelegram botAriza yuboradi, to‘laydi, holatini kuzatadi
OperatorWeb admin / mobil ilovaArizalarni ko‘radi, holatini boshqaradi

2. Nima ishlashi kerak

2.1 Telegram bot

  • /start — tanishtiradi; keyin ariza yuborish oqimi: ism → telefon → xizmat tanlash → tasdiqlash
  • Foydalanuvchi tasdiqlagach: API'da ariza yaratiladi va foydalanuvchiga to‘lov havolasi qaytadi
  • To‘lov o‘tganda bot o‘zi xabar yuboradi: "To‘lov qabul qilindi "
  • /holat — foydalanuvchining oxirgi arizasi holatini ko‘rsatadi

2.2 Backend API (NestJS + PostgreSQL)

  • Resurslar: arizalar, tolovlar (kontrakt /swagger-api skill bilan chiziladi)
  • Ariza holatlari mashinasi:
YANGI → TOLOV_KUTILMOQDA → TOLANGAN → KORIB_CHIQILDI → YAKUNLANDI
                        ↘ BEKOR_QILINDI
  • Ruxsat etilmagan holat o‘tishi 409 xato qaytaradi
  • To‘lov webhook endpoint'i: imzoni tekshiradi + idempotent ishlaydi (bir xil webhook ikki marta kelsa, to‘lov ikki marta yozilmaydi)
  • Sahifalash, holat bo‘yicha filtr, ism bo‘yicha qidiruv

2.3 To‘lov

  • Provayder: Payme/Click (test muhiti) yoki Stripe (test mode) — faqat sandbox!
  • Oqim: ariza → to‘lov yaratish → provayder sahifasi → webhook → holat yangilanadi
  • To‘lov mantig‘iga testsiz kod qo‘shish taqiqlanadi (CLAUDE.md qoidasi)

2.4 Admin panel (Next.js)

  • Login (bitta admin, session cookie; parol hash ko‘rinishida — env'da)
  • Arizalar jadvali: raqam, ism, xizmat, holat (rangli badge), to‘lov, sana; sahifalash
  • Filtr (holat) + qidiruv (ism); ariza tafsiloti + to‘lov tarixi
  • Holat o‘zgartirish (faqat ruxsat etilgan o‘tishlar)

2.5 Mobil klient (Swift YOKI Kotlin — bittasi)

  • Operator uchun: arizalar ro‘yxati (holat filtri), tafsilot, holat o‘zgartirish
  • Dars 6.5 dagi "5 usul" bilan nazorat qilish majburiy

3. Texnik talablar

  • Monorepo: apps/api, apps/bot, apps/admin + packages/shared (kontraktdan olingan tiplar)
  • Bot va admin faqat API orqali ishlaydi (bazaga to‘g‘ridan-to‘g‘ri ulanmaydi)
  • Migratsiyalar: flyway uslubi (V00N__nom.sql), naming — kurs standartlari bo‘yicha (Dars 6.4)
  • Sirlar: faqat .env / secrets; kodda birorta token yo‘q
  • CI: har PR'da typecheck + testlar + AI review; merge'dan keyin avtomatik deploy

4. Baholash mezonlari (100 ball)

MezonBallNimaga qaraladi
Arxitektura va qatlamlar20Monorepo tartibi, hamma narsa API orqali ishlashi, shared tiplar
To‘lov xavfsizligi25Imzo tekshiruvi, idempotentlik, holat mashinasi, testlar koddan oldin yozilgani
Kod sifati va review izlari20PR tarixi, review izohlari, CLAUDE.md qoidalariga rioya
Funksional to‘liqlik20Barcha oqimlar ishlaydi (bot → to‘lov → admin → mobil)
CI/CD va hujjatlar15Yashil pipeline, README, ARCHITECTURE.md

5. Bitiruv topshirig‘i (Dars 7.4 dan keyin)

Tizimga yangi funksiya qo‘shing: arizalarga operator izohlari — barcha qatlamlar bo‘ylab (migratsiya → API → admin UI → mobil), to‘liq tsikl bilan (reja → test → kod → review → PR → CI → deploy).

6. Chegaralar (nima TALAB QILINMAYDI)

  • Real pul o‘tkazish (faqat sandbox)
  • Push-bildirishnomalar (polling yetadi; push — "keyingi qadam")
  • Ko‘p operatorli rollar tizimi (bitta admin yetadi)
  • App Store / Play Market'ga chiqarish