Proje: OkulUp API · Hub: OkulUp API — Architecture

OkulUp API — Rapor Export Sistemi

Genel Akış

  1. Kullanıcı export endpoint’ini çağırır (attendance veya payment)
  2. ExportService::generateCsvExport() CSV üretir ve local disk’e kaydeder
  3. ReportExport kaydı oluşturulur (status: completed, 24 saat expiry)
  4. Client daha sonra GET /reports/exports/{id}/download ile indirir

ExportService

generateCsvExport(
    User $user,
    ReportType $reportType,
    array $headers,
    array $rows,
    string $filenamePrefix,
    array $filters = [],
): ReportExport
  • Storage: local disk (S3 değil), exports/{userId}/ klasörü
  • Dosya 24 saat sonra expire eder (expires_at)
  • CSV build: headers + rows array’i, quote + escape

ReportType Enum

StudentAcademicSummary
StudentAcademicSummaryExport
AttendanceReport
PaymentReport

Endpoint’ler

MethodPathFeature Flag
GET/reports/exports
GET/reports/exports/attendanceattendance_reports
GET/reports/exports/paymentpayment_summary
GET/reports/exports/{id}/download

Named Route

/reports/exports/{id}/downloadapi.exports.download (named route)

Yetki

  • Admin/Manager: okul geneli
  • Teacher: sadece kendi sınıfları (attendance export)
  • ReportExportPolicy::exportAttendance ile kontrol