DORA uyumlu, ICT üçüncü taraf risk yönetimi platformu. Hayali bir banka (NovaBank) için tasarlanmış, vendor envanteri, kritik servis haritalama, risk skorlama, sözleşme inceleme, kanıt takibi, düzeltici eylem yönetimi ve yönetim kurulu raporlamasını tek bir üründe birleştiren kapsamlı bir Cyber GRC / TPRM çözümüdür.
Bu proje, finansal hizmetler sektöründe bir portföy projeleri olarak tasarlanmıştır. Politikaları izole olarak sunmak yerine, bir bankanın kritik ICT üçüncü taraflarını denetlemek ve yönetim kuruluna raporlama yapmak için kullanacağı operasyonel yüzeyi modellemektedir.
- Vendor kaydı: sahiplik, kategori, servis eşleme ve güncel denetim durumu
- İş fonksiyonu ve servis bağımlılık haritalama
- Sorgu tabanlı mantıkla residual risk skorlama
- Kritik vendor'lar için sözleşme madde kontrol listesi
- Kanıt inceleme ve güncellik takibi
- Düzeltici eylem ve sorun iş akışı desteği
- Yönetim kurulu özeti ve register formatında dışa aktarma
- Backend ve frontend aktif olarak gerçek veritabanı / API ile çalışır.
- Frontend tarafında
frontend/lib/api.tsiçinde halen fallback mock veri desteği bulunur. API erişilemezse veya boş dönerse bazı ekranlar demo veriyle render olabilir. - Kimlik doğrulama sistemi vardır; ancak mevcut sürümde veri endpoint'lerinin büyük bölümü zorunlu auth ile korunmamaktadır. Login daha çok oturum deneyimi ve kullanıcı bağlamı sağlar.
- Alembic altyapısı mevcuttur; ancak mevcut veritabanı şeması ile ilk migration geçmişi birebir aynı değildir. Güncel gerçek şema ORM modelleri ve seed script ile doğrulanmalıdır.
┌──────────────────────────────────────────────────────────────┐
│ Frontend (Next.js 14) │
│ App Router · Server Components · Client Components │
│ Glassmorphism UI · CSS Variables · Google Fonts │
│ Auth Context · Toast / Modal / Confirm Dialog │
├──────────────────────────────────────────────────────────────┤
│ REST API (HTTP) │
├──────────────────────────────────────────────────────────────┤
│ Backend (FastAPI) │
│ JWT Auth · CORS · Request Logging Middleware │
│ Global Exception Handler · Pagination │
│ Risk Scoring Engine · Governance Services │
├──────────────────────────────────────────────────────────────┤
│ Database (SQLite / PostgreSQL) │
│ SQLAlchemy ORM · Alembic Migrations │
│ 14 tablo: users, vendors, services, mappings, assessments... │
└──────────────────────────────────────────────────────────────┘
| Katman | Teknoloji |
|---|---|
| Backend | Python 3.13, FastAPI 0.116, SQLAlchemy 2.0, Pydantic v2 |
| Auth | python-jose (JWT HS256), passlib + bcrypt |
| Database | SQLite (development), PostgreSQL (production) |
| Frontend | Next.js 14 (App Router), TypeScript, React 18 |
| Stil | Vanilla CSS (glassmorphism, CSS variables, dark theme) |
| Font | Manrope (sans), Fraunces (display), IBM Plex Mono |
Proje, mock-data prototipinden production-ready bir uygulamaya dönüştürülmek üzere 5 faz halinde geliştirilmiştir.
Amaç: Mock veri yerine gerçek veritabanı sorgularına geçmek ve API katmanını güçlendirmek.
1.1 — CORS ve Middleware
app/main.pydosyasınaCORSMiddlewareeklendi. Frontend'inlocalhost:3000adresinden API'ye erişmesi sağlandı.app/middleware/logging.pyile customRequestLoggingMiddlewareoluşturuldu. Her istek method, path, status code ve süre bilgisiyle loglanıyor.
1.2 — Global Hata Yönetimi
app/core/exceptions.pydosyasında standart JSON hata formatı tanımlandı.- Beklenmeyen hatalar
{"error": "INTERNAL_ERROR", "detail": "..."}formatında döndürülüyor. RequestValidationErroriçin özel handler ve genelExceptioncatch-all handler eklendi.
1.3 — Veritabanı Entegrasyonu
- Tüm Inventory API'leri (
GET /api/inventory/vendors,/services,/mappings,/business-functions) mock-data'dan SQLAlchemy sorguları kullanılarak gerçek veritabanına geçirildi. - Governance API'leri (
/governance/overview,/governance/contract-reviews,/governance/evidence,/governance/issues) veritabanından veri çekecek şekilde güncellendi. UserORM modeli oluşturuldu.- JSONB sütunları SQLite uyumluluğu için
JSONtipine çevrildi.
1.4 — Seed Script
scripts/seed_database.pygüncellenerek--resetflag'i ile tablolar temizlenip yeniden yükleniyor.sample_data/klasöründeki CSV dosyalarından (vendors, services, users, assessments, vb.) otomatik veri yükleme gerçekleştiriliyor.
1.5 — Pagination ve Filtreleme
- Tüm list endpoint'lerine
skipvelimitquery parametreleri eklendi. - Vendor listesinde
vendor_category,lifecycle_statusgibi dinamik filtreler etkinleştirildi.
backend/app/main.py — CORS + middleware entegrasyonu
backend/app/core/exceptions.py — Global hata yönetimi (yeni)
backend/app/middleware/__init__.py — Middleware package
backend/app/middleware/logging.py — Request logging middleware (yeni)
backend/app/api/inventory.py — DB sorguları + pagination
backend/app/api/governance.py — DB sorguları + pagination
backend/app/services/inventory_service.py — Service layer güncelleme
backend/app/services/governance.py — Governance service layer (yeni)
backend/app/models/user.py — User ORM modeli (yeni)
backend/scripts/seed_database.py — Reset + seed otomasyonu
Amaç: Statik frontend'i interaktif hale getirmek, CRUD işlemleri eklemek ve sayfaları öncelikli olarak gerçek backend verisiyle beslemek.
2.1 — Yeniden Kullanılabilir UI Bileşenleri
- Toast Notification System:
ToastContextveToastProvideroluşturuldu. İşlem sonrasında success/error/info mesajları gösteren animated bildirimler. - Modal/Dialog: Glassmorphism paneller ile açılıp kapanan, Escape tuşu ve dış tıklama desteğile reusable modal bileşeni.
- ConfirmDialog: Vendor silme gibi tehlikeli işlemler için "Emin misiniz?" onay dialogu.
2.2 — Vendor CRUD Operasyonları
VendorTablebileşeni oluşturuldu: arama fonksiyonu, edit/delete inline butonları.VendorFormbileşeni oluşturuldu: vendor adı, kategori, ülke gibi alanlarla Create ve Edit modları. İstemci tarafı validasyon.- Create (POST
/api/inventory/vendors), Edit (PATCH), Delete (DELETE) endpoint'leri frontend'den çağrılıyor. - İşlem sonrası
router.refresh()ile sayfa verisiz yenileniyor.
2.3 — Vendor Detay Sayfası
/vendors/[id]/page.tsxdinamik rotası oluşturuldu.- Vendor temel bilgileri, açık sorunları, sözleşme incelemeleri (clause check tablosu dahil) ve kanıt dosyaları bir arada gösteriliyor.
- Issue'lar severity badge'leri ve overdue uyarılarıyla renklendirildi.
- Her issue altında remediation action'lar listeleniyor.
2.4 — Governance Sayfalarının API'ye Bağlanması
lib/api.tsdosyasına governance tipleri ve fetch fonksiyonları eklendi (loadContractReviews,loadEvidenceFiles,loadIssues,loadGovernanceOverview).- Evidence Page (
/evidence): Tüm kanıt dosyaları listeleniyor, expired olanlar kırmızı uyarıyla. - Contracts Page (
/contracts): Vendor sözleşmeleri üzerindeki clause kontrolleri present/missing/partial statüleriyle. - Remediation Page (
/remediation): Açık sorunlar, overdue vurgusu, remediation action ilerleme takibi. - API erişilemezse frontend demo/fallback veri gösterebiliyor.
frontend/components/ui/toast.tsx — Toast notification system (yeni)
frontend/components/ui/modal.tsx — Reusable modal bileşeni (yeni)
frontend/components/ui/confirm-dialog.tsx — Silme onay dialogu (yeni)
frontend/components/vendor-table.tsx — İnteraktif vendor tablosu (yeni)
frontend/components/forms/vendor-form.tsx — Vendor create/edit formu (yeni)
frontend/app/vendors/page.tsx — CRUD entegrasyonu ile güncelleme
frontend/app/vendors/[id]/page.tsx — Vendor detay sayfası (yeni)
frontend/app/evidence/page.tsx — Gerçek veri ile yeniden yazıldı
frontend/app/contracts/page.tsx — Gerçek veri ile yeniden yazıldı
frontend/app/remediation/page.tsx — Gerçek veri ile yeniden yazıldı
frontend/app/layout.tsx — ToastProvider eklendi
frontend/app/globals.css — Toast, modal, toolbar, form CSS
frontend/lib/api.ts — Governance tipler + fetch fonksiyonları
Amaç: Risk assessment formlarını oluşturmak, skorlama motorunu veritabanına bağlamak ve frontend'de interaktif assessment yönetimi sunmak.
3.1 — Backend: Risk Assessment CRUD API
POST /api/risk/assessments— Yeni assessment payload'unu alır,risk_scoring.pymotoruna gönderir, hesaplanan tüm sonuçları (criticality, inherent risk, control effectiveness, residual risk, final rating, confidence level) veritabanına kaydeder.GET /api/risk/assessments— Tüm assessment geçmişini listeler (vendor_idile filtreleme,skip/limitpagination).GET /api/risk/assessments/{id}— Tekil assessment detayı.
3.2 — Risk Scoring Engine Entegrasyonu
risk_service.pyoluşturuldu.create_risk_assessment()fonksiyonu:- Gelen component skorlarını
RiskScoringRequest'e dönüştürür score_risk_assessment()çağırarak weighted average hesaplaması yaparapply_override_floor()ile minimum rating floor'u uygular (ör. critical clause gap varsa minimum High)derive_confidence_level()ile güven seviyesini belirler- Sonuçları ve breakdown'ları JSON olarak DB'ye yazar
- Gelen component skorlarını
3.3 — Frontend: İnteraktif Assessment Sayfası
AssessmentTablebileşeni: Assessment geçmişi tablosu, arama, "New assessment" butonu.AssessmentFormbileşeni: 2 adımlı modal form:- Adım 1: Assessment adı ve vendor seçimi
- Adım 2: 5 risk domain sorusu 1-5 ölçeğiyle (Data Sensitivity, Service Dependency, Connectivity, Governance, Contractual Oversight)
- Form gönderildiğinde backend scoring engine çalışıp sonuç anında tabloya yansıyor.
3.4 — Schema ve Model Düzeltmeleri
business_criticality_scoreInteger → Float (scoring engine float üretiyor)AssessmentStatusenum'unain_revieweklendi (seed verisi uyumsuzluğu)RiskAssessmentReadschema'sında JSON breakdown alanlarıOptionalyapıldı (eski seed verileri NULL)
backend/app/api/risk.py — 3 yeni CRUD endpoint
backend/app/services/risk_service.py — Assessment CRUD + scoring entegrasyonu (yeni)
backend/app/schemas/risk.py — Enum, Optional, Float düzeltmeleri
backend/app/models/risk_assessment.py — Float migration
frontend/app/assessments/page.tsx — Tamamen yeniden yazıldı
frontend/components/assessment-table.tsx — İnteraktif tablo (yeni)
frontend/components/forms/assessment-form.tsx — 2 adımlı form (yeni)
frontend/lib/api.ts — BackendRiskAssessment tipi + loadRiskAssessments()
Amaç: Dashboard'u gerçek veriyle beslemek, risk dağılım grafikleri eklemek ve executive overview sunmak.
4.1 — Dashboard Sayfası (Tamamen Yeniden Yazıldı)
- Tüm veriler paralel API çağrılarıyla yükleniyor: inventory, issues, assessments, evidence.
- Vendor Risk Distribution: CSS-based animated bar grafikleri ile Critical/High/Medium/Low dağılımı gösteriliyor.
- Assessment Outcomes: Değerlendirme sonuçlarının rating dağılımı grafik çubuklarıyla.
- Governance Pulse: Open issues, overdue items, expired evidence, assessments on file — canlı metrikler.
- Vendor Watchlist: Risk seviyesine göre sıralanmış, tıklanabilir vendor linkleri.
- Residual Risk Matrix: 4x4 impact vs. control effectiveness heatmap tablosu.
4.2 — Overview Sayfası Güncellendi
- Sayfa gerçek API verisini kullanacak şekilde güncellendi.
mock-data.tsdosyası tamamen kaldırılmadı; frontend içinde fallback veri kaynağı olarak tutuldu.- Open issues tablosu vendor isim çözümlemesi ile gerçek veriden dolduruluyor.
- Son assessments sidebar'da gösteriliyor.
- Priority vendors risk seviyesine göre sıralı.
4.3 — Yeni CSS Bileşenleri
.chart-bars,.chart-bar-row,.chart-bar-track,.chart-bar-fill— animated gradient bar grafikleri.vendor-link,.back-link— navigasyon linkleri.stack— dikey düzen layout
frontend/app/dashboard/page.tsx — Tamamen yeniden yazıldı
frontend/app/page.tsx — Overview sayfası, API-first veri yükleme + fallback
frontend/app/globals.css — Chart bar, link, stack CSS eklendi
Amaç: JWT tabanlı kimlik doğrulama sistemi kurmak, login/register sayfası oluşturmak ve kullanıcı oturumunu yönetmek.
5.1 — Backend: JWT Auth Sistemi
app/core/auth.pymodülü oluşturuldu:- Password hashing: passlib + bcrypt ile güvenli parola saklama
- JWT token: python-jose ile HS256 imzalı access token oluşturma (24 saat süre)
get_current_userdependency: Token varsa kullanıcıyı döndürür, yoksa None (soft auth)require_authdependency: Token gerektirir, yoksa 401 Unauthorized (hard auth)authenticate_user(): Email + password doğrulama
5.2 — Backend: Auth API Endpoint'leri
POST /api/auth/register— Yeni kullanıcı kaydı, otomatik JWT token dönüşüPOST /api/auth/login— OAuth2 Password Flow uyumlu giriş (username=email, password)GET /api/auth/me— Mevcut kullanıcı profili
5.3 — Frontend: Login/Register Sayfası
/login/page.tsx— Premium glassmorphism tasarımında Sign in / Register mod geçişli form./login/layout.tsx— AppShell (sidebar) olmadan minimal layout.- Form validasyonu ve hata mesajları.
- Başarılı girişte otomatik ana sayfaya yönlendirme.
5.4 — Frontend: Auth Context
lib/auth-context.tsx— React Context ile global auth state yönetimi:login(),register(),logout()fonksiyonları- localStorage'da token + kullanıcı bilgisi persistence
- Sayfa yenilemede oturum korunuyor
5.5 — Auth Davranışı (Mevcut)
GET /api/auth/meendpoint'i token gerektirir.- Backend'de
get_current_user()soft-auth olarak tasarlanmıştır; token yoksaNonedöndürür. - Mevcut sürümde inventory / governance / risk endpoint'leri zorunlu auth ile korunmamaktadır.
5.6 — Frontend: AppShell Auth Entegrasyonu
- Giriş yapan kullanıcının ismi üst bar'da badge olarak gösteriliyor.
- Sidebar'ın alt kısmında "Account" bölümü: kullanıcı adı, rolü ve "Sign out" butonu.
- Giriş yapılmamışsa sidebar'da "Sign in" linki gösteriliyor.
/loginsayfasında AppShell render edilmiyor (temiz login ekranı).
5.7 — Seed Script ve Model Güncellemeleri
Usermodelinepassword_hashsütunu eklendi.- Seed script'te tüm demo kullanıcılara bcrypt ile
demo1234şifresi atanıyor. - Yeni bağımlılıklar:
python-jose[cryptography],passlib[bcrypt],bcrypt
| İsim | Rol | Şifre | |
|---|---|---|---|
| anna.fischer@novabank.example | Anna Fischer | Business Owner | demo1234 |
| marco.silva@novabank.example | Marco Silva | Business Owner | demo1234 |
| sofia.jensen@novabank.example | Sofia Jensen | Business Owner | demo1234 |
| daniel.weber@novabank.example | Daniel Weber | Business Owner | demo1234 |
backend/app/core/auth.py — JWT + bcrypt auth modülü (yeni)
backend/app/api/auth.py — Login/register/me endpoint'leri (yeni)
backend/app/api/routes.py — Auth router eklendi
backend/app/models/user.py — password_hash sütunu
backend/requirements.txt — Auth bağımlılıkları
backend/scripts/seed_database.py — Demo şifre hashing
frontend/lib/auth-context.tsx — Auth context + provider (yeni)
frontend/app/login/page.tsx — Login/register sayfası (yeni)
frontend/app/login/layout.tsx — Sidebar'sız layout (yeni)
frontend/components/app-shell.tsx — User badge + sign out
frontend/app/layout.tsx — AuthProvider wrapper
frontend/app/globals.css — Login card, user badge CSS
GRC-Projesi/
├── backend/
│ ├── alembic/ — Migration altyapısı
│ ├── app/
│ │ ├── api/
│ │ │ ├── auth.py — JWT login/register endpoint'leri
│ │ │ ├── governance.py — Contract, evidence, issue API'leri
│ │ │ ├── inventory.py — Vendor, service, mapping API'leri
│ │ │ ├── risk.py — Assessment CRUD + scoring endpoint'leri
│ │ │ └── routes.py — Router birleştiricisi
│ │ ├── core/
│ │ │ ├── auth.py — JWT token, bcrypt, auth dependency'leri
│ │ │ ├── config.py — Pydantic Settings (DATABASE_URL, vs.)
│ │ │ └── exceptions.py — Global hata yönetimi
│ │ ├── db/
│ │ │ ├── base.py — SQLAlchemy Base + model importer
│ │ │ └── session.py — Engine + SessionLocal + get_db
│ │ ├── middleware/
│ │ │ └── logging.py — Request logging middleware
│ │ ├── models/
│ │ │ ├── business_function.py
│ │ │ ├── contract_review.py
│ │ │ ├── evidence.py
│ │ │ ├── issue.py
│ │ │ ├── questionnaire.py
│ │ │ ├── risk_assessment.py — RiskAssessment ORM modeli
│ │ │ ├── service.py
│ │ │ ├── user.py — User modeli (password_hash dahil)
│ │ │ ├── vendor.py
│ │ │ └── vendor_service_mapping.py
│ │ ├── schemas/
│ │ │ ├── governance.py — Pydantic governance şemaları
│ │ │ ├── inventory.py — Pydantic inventory şemaları
│ │ │ └── risk.py — Risk assessment + scoring şemaları
│ │ ├── services/
│ │ │ ├── governance.py — Governance DB sorgu servisleri
│ │ │ ├── inventory_service.py — Inventory DB sorgu servisleri
│ │ │ ├── risk_scoring.py — Weighted average risk hesaplama motoru
│ │ │ └── risk_service.py — Assessment CRUD + otomatik skorlama
│ │ └── main.py — FastAPI app (CORS, middleware, exception handlers)
│ ├── scripts/
│ │ └── seed_database.py — CSV'den DB'ye veri yükleme
│ ├── .env.example
│ ├── grc_tprm.db — Local SQLite veritabanı (örnek/dev)
│ └── requirements.txt
│
├── frontend/
│ ├── app/
│ │ ├── assessments/page.tsx — Assessment geçmişi + yeni oluşturma
│ │ ├── contracts/page.tsx — Sözleşme madde incelemeleri
│ │ ├── dashboard/page.tsx — Executive risk dashboard
│ │ ├── evidence/page.tsx — Kanıt dosyaları register'ı
│ │ ├── login/
│ │ │ ├── layout.tsx — Sidebar'sız layout
│ │ │ └── page.tsx — Login/register form
│ │ ├── remediation/page.tsx — Düzeltici eylem ve sorun takibi
│ │ ├── vendors/
│ │ │ ├── [id]/page.tsx — Vendor detay (360° görünüm)
│ │ │ └── page.tsx — Vendor register + CRUD
│ │ ├── globals.css — Tüm tasarım sistemi
│ │ ├── layout.tsx — Root layout (Auth + Toast provider)
│ │ └── page.tsx — Overview ana sayfa
│ ├── components/
│ │ ├── forms/
│ │ │ ├── assessment-form.tsx — 2 adımlı assessment formu
│ │ │ └── vendor-form.tsx — Vendor create/edit formu
│ │ ├── ui/
│ │ │ ├── confirm-dialog.tsx — Silme onay dialogu
│ │ │ ├── modal.tsx — Reusable modal
│ │ │ └── toast.tsx — Toast notification system
│ │ ├── app-shell.tsx — Sidebar + header (auth entegreli)
│ │ ├── assessment-table.tsx — İnteraktif assessment tablosu
│ │ ├── kpi-card.tsx — KPI metrik kartı
│ │ ├── section-card.tsx — Bölüm kartı
│ │ ├── status-badge.tsx — Durum rozeti
│ │ ├── vendor-table.tsx — İnteraktif vendor tablosu
│ │ └── workspace-header.tsx — Sayfa başlık bileşeni
│ └── lib/
│ ├── api.ts — API client + tüm fetch fonksiyonları
│ ├── auth-context.tsx — React auth context + provider
│ └── mock-data.ts — Fallback / demo veri kaynağı
│
├── sample_data/ — CSV seed verileri
├── docs/ — Proje dokümantasyonu
└── exports/ — Örnek register ve board çıktıları
- Python 3.13+
- Node.js 18+
- npm
cd backend
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux
pip install -r requirements.txt
python scripts/seed_database.py --reset
python -m uvicorn app.main:app --reload --port 8000İsteğe bağlı olarak PostgreSQL container'ı için kök dizinde:
docker-compose up -dcd frontend
npm install
npm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:8000/api
- API Docs: http://localhost:8000/docs
- Login: http://localhost:3000/login
PostgreSQL kullanmak için backend/.env dosyası oluşturun:
DATABASE_URL=postgresql://user:pass@localhost:5432/novabank_tprmVarsayılan olarak SQLite (sqlite:///grc_tprm.db) kullanılır.
Not: uvicorn komutu backend/ dizininden çalıştırıldığında SQLite dosyası pratikte backend/grc_tprm.db altında oluşur / kullanılır.
| Method | Path | Açıklama |
|---|---|---|
| POST | /api/auth/register |
Yeni kullanıcı kaydı |
| POST | /api/auth/login |
Giriş (OAuth2 password flow) |
| GET | /api/auth/me |
Mevcut kullanıcı profili |
| Method | Path | Açıklama |
|---|---|---|
| GET | /api/inventory/vendors |
Vendor listesi (pagination + filtreleme) |
| POST | /api/inventory/vendors |
Yeni vendor oluşturma |
| GET | /api/inventory/vendors/{id} |
Vendor detayı |
| PATCH | /api/inventory/vendors/{id} |
Vendor güncelleme |
| DELETE | /api/inventory/vendors/{id} |
Vendor silme |
| GET | /api/inventory/services |
Servis listesi |
| POST | /api/inventory/services |
Servis oluşturma |
| GET | /api/inventory/business-functions |
İş fonksiyonları |
| POST | /api/inventory/business-functions |
İş fonksiyonu oluşturma |
| GET | /api/inventory/mappings |
Vendor-servis-fonksiyon eşlemeleri |
| POST | /api/inventory/mappings |
Yeni eşleme oluşturma |
| GET | /api/inventory/vendors/{id}/mappings |
Vendor'a ait eşlemeler |
| Method | Path | Açıklama |
|---|---|---|
| GET | /api/risk/assessments |
Assessment listesi |
| POST | /api/risk/assessments |
Yeni assessment (otomatik skorlama) |
| GET | /api/risk/assessments/{id} |
Assessment detayı |
| POST | /api/risk/score |
Anlık risk skoru hesaplama |
| POST | /api/risk/questionnaire/evaluate |
Anket tabanlı skorlama |
| GET | /api/risk/questionnaire/template/default |
Varsayılan anket şablonu |
| Method | Path | Açıklama |
|---|---|---|
| GET | /api/governance/overview/{vendor_id} |
Vendor governance özeti |
| GET | /api/governance/contract-reviews |
Sözleşme incelemeleri |
| POST | /api/governance/contract-reviews |
Sözleşme incelemesi oluşturma |
| GET | /api/governance/evidence |
Kanıt dosyaları |
| POST | /api/governance/evidence |
Kanıt kaydı oluşturma |
| GET | /api/governance/issues |
Sorunlar ve bulgular |
| POST | /api/governance/issues |
Yeni issue oluşturma |
| PATCH | /api/governance/issues/{issue_id} |
Issue güncelleme |
| GET | /api/governance/clause-gap-count/{vendor_id} |
Kritik clause gap sayısı |
| Method | Path | Açıklama |
|---|---|---|
| GET | /api/health |
Sağlık kontrolü |
| GET | /api/platform-info |
Platform bilgisi |
Sistemin kalbi olan risk_scoring.py aşağıdaki adımları izler:
1. calculate_business_criticality()
├── supports_critical_function (0.25)
├── customer_impact (0.20)
├── regulatory_impact (0.20)
├── data_sensitivity (0.15)
├── substitutability (0.10)
└── recovery_sensitivity (0.10)
2. calculate_inherent_risk()
├── data_sensitivity_access (0.20)
├── service_dependency_availability (0.15)
├── connectivity_integration (0.15)
├── geographic_regulatory_exposure (0.10)
├── subcontracting_fourth_party (0.10)
├── incident_performance_history (0.05)
└── business_criticality_context (0.25) ← Adım 1'den
3. calculate_control_effectiveness()
├── governance_assurance (1/6)
├── identity_access_security (1/6)
├── security_ops_monitoring (1/6)
├── resilience_continuity (1/6)
├── vulnerability_change_mgmt (1/6)
└── contractual_oversight (1/6)
4. calculate_residual_risk()
→ inherent_risk × (1 - control_factor + 0.2)
5. map_final_rating()
→ ≤1.5: Low | ≤2.5: Medium | ≤3.5: High | >3.5: Critical
6. apply_override_floor()
→ Missing evidence + critical vendor → minimum High
→ Critical clause gaps → minimum High
→ Open high-severity issues → rating floor'unu yükseltebilir
7. derive_confidence_level()
→ 0 gaps: High | ≤2 gaps: Medium | >2 gaps: Low
- Frontend fallback veri desteği nedeniyle API kapalıyken bazı ekranlar yine dolu görünebilir.
- Login deneyimi mevcut olsa da tam route / endpoint yetkilendirmesi henüz uygulanmış değildir.
- Migration geçmişi ile güncel ORM şeması arasında temizlik ihtiyacı vardır; özellikle yeni ortamlarda migration stratejisi gözden geçirilmelidir.
Bu proje eğitim ve portföy amaçlıdır. Ticari kullanım için lisans gereklidir.