TraceMind, teknik hata ekran görüntülerini analiz eden yerel çalışan bir yapay zeka destekli arıza çözüm uygulamasıdır. Kullanıcı ekran görüntüsü yükler; sistem OCR ile metin ve hata sinyallerini çıkarır, PostgreSQL/pgvector üzerindeki bilgi bankasından ilgili parçaları getirir ve Ollama üzerinden teşhis ile çözüm adımları üretir.
MVP odağı Oracle DB, Microsoft SQL Server, Linux/System, Docker/Linux ve Network/Connectivity gibi teknik alanlarda ekran görüntüsü tabanlı analiz akışını uçtan uca doğrulamaktır.
- Kullanıcı Angular arayüzünden ekran görüntüsü yükler.
- Backend API görüntüyü FastAPI AI servisine gönderir.
- AI servisi OpenCV/EasyOCR ile OCR, görsel ön işleme ve teknik sinyal çıkarımı yapar.
- Backend OCR çıktısı, kullanıcı açıklaması ve domain bilgisinden retrieval sorgusu oluşturur.
- PostgreSQL/pgvector bilgi bankasından ilgili doküman parçaları getirilir.
- Ollama ile nihai teşhis, çözüm adımları, kanıtlar ve güven seviyesi üretilir.
- Sonuç veritabanına kaydedilir.
- Frontend analiz sonucu, çıkarılan metin, kanıtlar, pipeline durumu ve analiz geçmişini gösterir.
TraceMind analiz sonucunda yalnızca teşhis ve çözüm adımı üretmez; kullanıcıya bu sonuca neden ulaşıldığını da özetler. Canlı analiz ve geçmiş detay ekranında “Bu Sonuca Neden Ulaşıldı?” bölümü gösterilir.
Bu bölümde şu bilgiler yer alır:
- OCR’dan yakalanan hata kodu, alan/domain, retrieval cache durumu ve kullanılan model gibi tespit edilen sinyaller.
- Bilgi bankasından getirilen kanıtların güvenli özeti: başlık, domain, eşleşen hata kodu, sıra, kaynak tipi ve varsa relevance skoru.
- Güven skoru açıklaması: hata kodunun doğrudan yakalanması, domain eşleşmesi, kaç KB kaydı bulunduğu ve LLM/fallback durumu.
- Çözüm adımlarının dayanağı: önerinin hangi sinyal ve kanıt setinden üretildiğine dair kısa not.
Örnek ORA-12154 akışı: OCR çıktısında ORA-12154 yakalanır, alan Oracle DB olarak sınıflandırılır, Oracle Net/TNS çözümleme bilgisi içeren KB kayıtları sıralanır ve teşhis bu hata kodu ile ranked evidence üstünden açıklanır.
Gizlilik sınırı: açıklanabilirlik alanı tam OCR metnini, tam LLM prompt’unu veya tam LLM cevabını structured log/Sentry/Elasticsearch içine yazmaz. UI’daki kanıt kartları KB chunk metninin tamamını tekrar etmez; kısa, güvenli seçim nedenini gösterir.
TraceMind ayrıca olası kök nedenleri sıralayan bir troubleshooting intelligence katmanı içerir. Bu katman “tek bir LLM cevabı” yerine, backend tarafında kanıta dayalı adaylar üretir ve kullanıcıya hangi sebebin önce kontrol edilmesi gerektiğini gösterir.
Root cause ranking şu sinyalleri kullanır:
- OCR’dan çıkarılan exact hata kodu.
- Domain eşleşmesi.
- Retrieval rank ve similarity score.
- KB başlığı/bölümü ve güvenli keyword overlap.
- OCR confidence gibi destek sinyalleri.
- Cache hit/miss yalnızca destek metadata’sıdır; ana sebep olarak kullanılmaz.
Skor ve öncelik LLM’e bırakılmaz. LLM, backend’in ürettiği aday listesini görür ve yanıtını bu aday sırasına göre önceliklendirir; ancak score backend heuristic + evidence ağırlıklı kalır. Bu yaklaşım, cevapların daha tekrarlanabilir ve denetlenebilir olmasını sağlar.
ORA-12154 örneğinde TraceMind şu adayları önceliklendirir:
TNS connect identifier cannot be resolvedWrong or missing tnsnames.ora entryOracle client network configuration mismatchDNS or Easy Connect resolution issue
Her aday için probability label, 0-100 score, reasoning, destekleyen KB başlıkları, önerilen ilk aksiyon ve göz ardı edilirse risk bilgisi gösterilir. Tam OCR metni, tam prompt ve tam LLM cevabı loglara veya evidence raporlarına yazılmaz.
| Entegrasyon | TraceMind'deki kullanım | Port / komut / servis |
|---|---|---|
| PrimeNG + Sakai-Ng UI geçişi | Angular arayüzü PrimeNG 19 bileşenleri, PrimeIcons ve Sakai çizgisine uygun uygulama kabuğu ile düzenlendi. Analiz yükleme, sonuç, geçmiş ve pipeline panelleri bu UI yapısında çalışır. | npm run frontend:start -- --host 127.0.0.1 --port 4200 |
| Responsive + çoklu dil desteği | Arayüz masaüstü ve dar ekranlarda kullanılabilir olacak şekilde düzenlendi. Türkçe/İngilizce metinler @ngx-translate/core ve i18n JSON dosyalarıyla yönetilir. |
Frontend dev server: http://127.0.0.1:4200 |
| PWA | Angular servis worker, manifest ve ikonlarla kurulabilir uygulama kabuğu sağlanır. PWA offline AI/OCR/RAG çalıştırmaz; analiz için backend, AI service, DB ve Ollama gerekir. | npm run build --workspace @tracemind/frontend -- --configuration production, preview: npx http-server apps/frontend/dist/tracemind-frontend/browser -p 4300 -c-1 |
| Sentry | Frontend runtime hataları ve backend exception takibi için temel entegrasyon vardır. DSN boşsa uygulama normal çalışır; gerçek DSN env/deploy ortamından verilmelidir. | Frontend environment ayarları, backend SENTRY_DSN, Sentry__EnableInDevelopment |
| Redis cache | Bilgi erişimi sonucundaki güvenli retrieval metadata kısa süreli cache edilir. Redis kapalıysa backend PostgreSQL/pgvector üzerinden çalışmaya devam eder. | Docker servis: tracemind-redis, port 6379, kontrol: docker exec tracemind-redis redis-cli ping |
| RabbitMQ management UI | Opsiyonel altyapı/management UI gösterimi sağlar. Analyze pipeline aktif olarak RabbitMQ üzerinden çalışmaz; mesaj kuyruğu entegrasyonu bu aşamada yoktur. | Docker servis: tracemind-rabbitmq, panel http://127.0.0.1:15672 |
| SonarQube | Yerel statik kod analizi, maintainability ve temel code smell görünürlüğü için foundation sağlar. Backend ve frontend scan komutları token env üzerinden çalışır. | Docker servis: tracemind-sonarqube, panel http://127.0.0.1:9000 |
| Jenkins CI/CD | Repo kökündeki Jenkinsfile build, test, coverage, production build, opsiyonel Selenium, opsiyonel Sonar ve RUN_LOCAL_DEPLOY=true ile local PWA deploy/package stage'lerini tek pipeline altında toplar. Cloud deploy veya image publish yapmaz. |
Docker servis: tracemind-jenkins, panel http://127.0.0.1:8080 |
| Selenium UI test otomasyonu | Frontend smoke test foundation seviyesinde çalışır. Ana kabuk, dil geçişi, upload alanı ve backend kapalıyken kullanıcı dostu durum doğrulanır. | npm run frontend:e2e:selenium, varsayılan E2E_BASE_URL=http://127.0.0.1:4200 |
| Elasticsearch + Kibana log merkezi | Backend structured logları Elasticsearch'e gönderilebilir; Kibana ile analiz pipeline olayları aranabilir. AI service doğrudan Elasticsearch'e yazmaz, JSON console foundation içerir. | Elasticsearch http://127.0.0.1:9200, Kibana http://127.0.0.1:5601 |
| Katman | Teknoloji |
|---|---|
| Ön yüz | Angular 19, PrimeNG 19, PrimeIcons, Sakai-Ng tarzı yerleşim |
| Çoklu dil | @ngx-translate/core, @ngx-translate/http-loader |
| PWA | Angular service worker, manifest, PWA ikonları |
| Arka uç | .NET 8 Web API |
| Veritabanı | PostgreSQL 16 + pgvector |
| Yapay zeka servisi | Python, FastAPI, EasyOCR, OpenCV |
| LLM | Ollama, llama3:latest |
| Vektör temsil | Ollama, nomic-embed-text:latest |
| Önbellek | Redis, StackExchange.Redis |
| Gözlemlenebilirlik | Sentry, Elasticsearch, Kibana |
| Kod kalitesi | SonarQube Community LTS, dotnet-sonarscanner, sonar-scanner |
| CI/CD foundation | Jenkins LTS, declarative Jenkinsfile |
| Yerel altyapı | Docker Compose |
Gerekli araçlar:
- .NET SDK 8+
- Node.js ve npm
- Python 3.11+
- Docker Desktop
- Ollama
- Java 17 JDK/JRE
- PowerShell
İlk kurulum:
cd C:\Users\Kadir\Desktop\TraceMind
if (-not (Test-Path infra/docker/.env)) { Copy-Item infra/docker/.env.example infra/docker/.env }
docker compose --env-file infra/docker/.env --file infra/docker/docker-compose.yml up -d
dotnet tool restore
dotnet restore TraceMind.sln
npm install
cd apps/ai-service
if (-not (Test-Path .venv)) { python -m venv .venv }
.venv\Scripts\python.exe -m pip install -e .
cd C:\Users\Kadir\Desktop\TraceMind
ollama pull llama3
ollama pull nomic-embed-text
$env:ConnectionStrings__TraceMindDb="Host=localhost;Port=5432;Database=tracemind;Username=tracemind;Password=<local-password>"
dotnet ef database update --project apps/backend/src/TraceMind.Infrastructure --startup-project apps/backend/src/TraceMind.ApiGünlük çalıştırma için servisleri ayrı terminallerde başlatın.
Altyapı servisleri:
cd C:\Users\Kadir\Desktop\TraceMind
docker compose --env-file infra/docker/.env --file infra/docker/docker-compose.yml up -dBu komut PostgreSQL/pgvector, Redis, opsiyonel RabbitMQ management UI, SonarQube, Jenkins, Elasticsearch ve Kibana servislerini başlatır. RabbitMQ bu aşamada opsiyonel altyapı gösterimidir; analyze pipeline aktif olarak RabbitMQ üzerinden çalışmaz.
Ollama:
ollama serveOllama zaten arka planda çalışıyorsa bu terminale gerek yoktur.
Backend API:
cd C:\Users\Kadir\Desktop\TraceMind
$env:ConnectionStrings__TraceMindDb="Host=localhost;Port=5432;Database=tracemind;Username=tracemind;Password=<local-password>"
$env:REDIS_CONNECTION="127.0.0.1:6379"
$env:TRACEMIND_CACHE_ENABLED="true"
$env:LOG_TO_ELASTICSEARCH="true"
$env:ELASTICSEARCH_URL="http://127.0.0.1:9200"
dotnet run --project apps/backend/src/TraceMind.Api --urls http://127.0.0.1:5180FastAPI AI service:
cd C:\Users\Kadir\Desktop\TraceMind\apps\ai-service
.venv\Scripts\activate
uvicorn app.main:app --reload --port 8000Frontend dev server:
cd C:\Users\Kadir\Desktop\TraceMind
npm run frontend:start -- --host 127.0.0.1 --port 4200PWA production preview:
cd C:\Users\Kadir\Desktop\TraceMind
npm run build --workspace @tracemind/frontend -- --configuration production
npx http-server apps/frontend/dist/tracemind-frontend/browser -p 4300 -c-1| Servis | Port / adres | Görev |
|---|---|---|
| PostgreSQL + pgvector | localhost:5432 |
Analiz geçmişi, bilgi bankası dokümanları, parça kayıtları ve vektör temsil verileri |
| Redis | localhost:6379 |
Güvenli retrieval metadata cache |
| RabbitMQ | http://127.0.0.1:15672 |
Opsiyonel management UI; kullanıcı/şifre örnekleri infra/docker/.env.example içindedir |
| SonarQube | http://127.0.0.1:9000 |
Yerel statik kod analizi |
| Jenkins | http://127.0.0.1:8080 |
Yerel CI pipeline paneli |
| Jenkins agent port | localhost:50000 |
Jenkins inbound agent bağlantıları |
| Elasticsearch | http://127.0.0.1:9200 |
Backend structured log index'i |
| Kibana | http://127.0.0.1:5601 |
Elasticsearch log arama ve inceleme paneli |
| Ollama | http://127.0.0.1:11434 |
Yerel LLM ve embedding modeli |
| Backend API | http://127.0.0.1:5180 |
OCR, retrieval, LLM ve kayıt orkestrasyonu |
| FastAPI AI service | http://127.0.0.1:8000 |
Görsel işleme, OCR ve teknik sinyal çıkarımı |
| Frontend dev server | http://127.0.0.1:4200 |
Angular geliştirme sunucusu |
| PWA preview | http://127.0.0.1:4300 |
Production build statik ön izleme |
Build ve test komutları:
dotnet build TraceMind.sln
npm run frontend:test:coverage
npm run frontend:e2e:selenium
npm run build --workspace @tracemind/frontend -- --configuration production
docker compose --file infra/docker/docker-compose.yml configSelenium testleri için önce Angular dev server çalışmalıdır:
cd C:\Users\Kadir\Desktop\TraceMind
npm run frontend:start -- --host 127.0.0.1 --port 4200Farklı bir adres kullanılacaksa:
$env:E2E_BASE_URL="http://127.0.0.1:4200"
npm run frontend:e2e:seleniumChrome'u görünür açmak için:
$env:E2E_HEADLESS="false"
npm run frontend:e2e:seleniumTeslim kanıtları docs/evidence/ altında tutulur. Bu klasör kaynak koddan ayrıdır ve sahte ekran görüntüsü/video üretimi içermez; eksik görsel veya video kanıtları ilgili markdown dosyalarında manuel alınacak kanıt olarak belirtilir.
| Kanıt | Durum | Dosya / hedef |
|---|---|---|
| SonarQube analiz özeti | Rapor foundation hazır, dashboard screenshot'ları manuel alınır | docs/evidence/sonarqube/sonarqube-report.md, hedef PNG'ler: docs/evidence/sonarqube/*.png |
| RabbitMQ management UI | Opsiyonel management UI hazır; analyze pipeline RabbitMQ kullanmaz | docs/evidence/rabbitmq/rabbitmq-evidence.md, panel: http://127.0.0.1:15672 |
| Selenium UI test sonucu/video | Test komutu ve sonuç notu hazır; video manuel kaydedilir | docs/evidence/selenium/selenium-test-result.md, hedef video: docs/evidence/selenium/selenium-ui-test-recording.mp4 |
| Jenkins local deploy kanıtı | Local PWA Deploy stage'i local preview/package kanıtı üretir; cloud deploy değildir |
docs/evidence/jenkins/jenkins-local-deploy-result.md, docs/evidence/jenkins/real-local-deploy-setup.md, hedef video: docs/evidence/jenkins/jenkins-local-deploy-recording.mp4 |
| Explainability smoke | ORA-12154 açıklanabilirlik alanları gerçek endpoint ile doğrulandı | docs/evidence/explainability/ora-12154-explainability-smoke.md |
| Root cause ranking smoke | ORA-12154 kök neden aday sıralaması gerçek endpoint ile doğrulandı | docs/evidence/troubleshooting-intelligence/ora-12154-root-cause-ranking.md |
Evidence index:
docs/evidence/evidence-index.md
Sağlık kontrolleri:
Invoke-RestMethod -Uri "http://127.0.0.1:5180/api/health"
Invoke-RestMethod -Uri "http://127.0.0.1:8000/api/health"
Invoke-RestMethod -Uri "http://127.0.0.1:11434/api/tags"
docker exec tracemind-redis redis-cli ping
Invoke-RestMethod -Uri "http://127.0.0.1:9200"
Invoke-WebRequest -UseBasicParsing -Uri "http://127.0.0.1:5601" | Select-Object -ExpandProperty StatusCode
Invoke-WebRequest -UseBasicParsing -Uri "http://127.0.0.1:9000" | Select-Object -ExpandProperty StatusCode
Invoke-WebRequest -UseBasicParsing -Uri "http://127.0.0.1:8080" | Select-Object -ExpandProperty StatusCodeBackend SonarQube scan:
$env:SONAR_TOKEN="<local-sonar-token>"
dotnet tool restore
dotnet dotnet-sonarscanner begin `
/k:"tracemind-backend" `
/n:"TraceMind Backend" `
/d:sonar.host.url="http://127.0.0.1:9000" `
/d:sonar.token="$env:SONAR_TOKEN" `
/d:sonar.exclusions="apps/frontend/**,apps/ai-service/**,node_modules/**,**/bin/**,**/obj/**"
dotnet build TraceMind.sln
dotnet dotnet-sonarscanner end `
/d:sonar.token="$env:SONAR_TOKEN"Frontend SonarQube scan:
$env:SONAR_TOKEN="<local-sonar-token>"
npm run frontend:test:coverage
npm run quality:sonar:frontend -- `
"-Dsonar.host.url=http://127.0.0.1:9000" `
"-Dsonar.token=$env:SONAR_TOKEN"Jenkins notları:
- Jenkins servisi Docker Compose ile
http://127.0.0.1:8080adresinde çalışır. - İlk admin password değeri yalnızca lokal kurulum ekranında kullanılmalı, README veya repoya yazılmamalıdır.
- Sonar stage'leri
SONAR_TOKENyoksa güvenli şekilde skip edilir. - Selenium stage'i opsiyoneldir;
RUN_UI_TESTS=trueverilmedikçe çalışmaz. RUN_LOCAL_DEPLOY=trueverilirseLocal PWA Deploystage'i production PWA çıktısınıdeploy/frontend-pwa/altına paketler. Bu yalnızca local preview/deploy kanıtıdır; cloud dağıtımı, registry push veya image publish değildir.
Geliştirme bilgi bankası manifest tabanlıdır:
- Manifest:
data/knowledge/manifest.dev.json - Kaynak dokümanlar:
data/knowledge/raw/dev - Kapsanan alanlar: Oracle DB, Microsoft SQL Server, Linux/System, Network/Connectivity
Güncel kapsam:
| Alan | Doküman |
|---|---|
| Oracle DB | 10 |
| Microsoft SQL Server | 10 |
| Linux/System | 10 |
| Network/Connectivity | 10 |
Bilgi bankasını içe aktar:
dotnet run --project apps/backend/tools/TraceMind.KbIngestion -- --manifest data/knowledge/manifest.dev.jsonVektör temsil üret:
dotnet run --project apps/backend/tools/TraceMind.KbIngestion -- --generate-embeddings --batch-size 10Vektör temsilleri zorla yenile:
dotnet run --project apps/backend/tools/TraceMind.KbIngestion -- --generate-embeddings --force --batch-size 10Faydalı veritabanı kontrolleri:
docker exec -i tracemind-postgres psql -U tracemind -d tracemind -c "SELECT COUNT(*) FROM knowledge_documents;"
docker exec -i tracemind-postgres psql -U tracemind -d tracemind -c "SELECT COUNT(*) FROM knowledge_chunks;"
docker exec -i tracemind-postgres psql -U tracemind -d tracemind -c "SELECT COUNT(*) FROM knowledge_chunks WHERE embedding IS NOT NULL;"Manuel test seti sentetik ekran görüntülerinden oluşur:
- Görseller:
data/testsets/manual/screenshots - Beklenen sonuçlar:
data/testsets/manual/ground-truth/manual-testset-v1.json - Detaylı rapor:
docs/manual-testset-v1-report.md
Güncel sette 40 PNG bulunur:
| Kategori | Adet |
|---|---|
| Oracle | 10 |
| SQL Server | 8 |
| Linux | 8 |
| Docker | 6 |
| Network | 8 |
Test setini yeniden üret:
python data/testsets/manual/generate_manual_testset_v1.pyÖrnek analiz görseli:
data/testsets/manual/screenshots/oracle/oracle-001-ora-12154.png
Görsel analiz:
curl.exe -X POST "http://127.0.0.1:5180/api/analysis/image" `
-F "image=@data/testsets/manual/screenshots/oracle/oracle-001-ora-12154.png" `
-F "userPrompt=Kök nedeni ve çözüm adımlarını açıkla." `
-F "domainHint=Oracle DB"Analiz geçmişi:
curl.exe "http://127.0.0.1:5180/api/analysis/logs?pageNumber=1&pageSize=20"
curl.exe "http://127.0.0.1:5180/api/analysis/logs/{id}"Bilgi bankası arama:
curl.exe -G "http://127.0.0.1:5180/api/knowledge/search" `
--data-urlencode "query=ORA-12154" `
--data-urlencode "domain=Oracle DB" `
--data-urlencode "topK=5"- Gerçek connection string, parola, API key, token, private key veya DSN değeri repoya eklenmez.
- README'deki secret alanları placeholder olarak gösterilir; gerçek lokal değerler yazılmaz.
infra/docker/.env.exampleyalnızca örnektir; yerelinfra/docker/.envdosyası commitlenmemelidir.apps/ai-service/.envoluşturulabilir, fakat gerçek değerlerle repoya eklenmemelidir.- Sentry DSN env/deploy ortamından verilmelidir; frontend ve backend varsayılanları DSN boşken güvenli çalışır.
- Sonar token
SONAR_TOKENenv değişkeni veya Jenkins credential olarak kullanılmalıdır; token dosyalara yazılmaz. - Jenkins admin password, API token ve credential değerleri repo dosyalarına eklenmez; Jenkins credentials store kullanılır.
- OCR ham tam metni, LLM prompt'u ve tam LLM cevabı structured log, Sentry event veya Elasticsearch kaydı olarak tutulmaz.
- Upload edilen screenshot binary içeriği cache veya log yapılmaz.
- Redis yalnızca güvenli retrieval metadata cache için kullanılır; screenshot, prompt, token, cookie veya connection string cache edilmez.
- Authorization header, cookie, token, DB connection string, request body ve kullanıcı local path bilgileri log filtrelerinden geçirilir.
- Test ve bilgi bankası içeriklerinde
password,token,secretgibi kelimeler sentetik arıza çözüm metni olarak geçebilir; bunlar gerçek kimlik bilgisi değildir.
Sentry frontend çalışma zamanı hataları ve backend exception takibi için temel seviyede entegredir. Üretim DSN'i repoya yazılmaz.
Backend ayarları:
$env:SENTRY_DSN="<sentry-dsn>"
$env:Sentry__TracesSampleRate="0"
$env:Sentry__EnableInDevelopment="false"
$env:Sentry__EnableDebugEndpoint="false"Debug endpoint varsayılan olarak kapalıdır. Açıldığında /api/debug/sentry-test kontrollü backend test uç noktası olarak kullanılabilir. Frontend tarafında debug route varsayılan olarak kapalıdır.
Backend loglarını Elasticsearch'e göndermek için:
$env:LOG_TO_ELASTICSEARCH="true"
$env:ELASTICSEARCH_URL="http://127.0.0.1:9200"
$env:ELASTICSEARCH_INDEX="tracemind-backend-dev"Backend tarafında şu analyze olayları structured metadata olarak loglanır:
analysis_startedocr_completederror_code_extractedretrieval_cache_hitretrieval_cache_missllm_completedhistory_persistedanalysis_failed
Index kontrolü:
Invoke-RestMethod -Uri "http://127.0.0.1:9200/_cat/indices?v"Analyze event arama örneği:
Invoke-RestMethod `
-Uri "http://127.0.0.1:9200/tracemind-backend-dev/_search?q=message:analysis_started&pretty"AI service doğrudan Elasticsearch client kullanmaz; FastAPI console loglarını JSON formatına normalize eder. Bu loglar ileride Docker log collector, Filebeat veya Logstash ile Elasticsearch'e alınabilir.
Redis, analiz pipeline içindeki bilgi erişimi sonucunu kısa süreli cache etmek için kullanılır. Aynı domain ve hata kodu için tekrar eden sorgularda bilgi bankası arama sonucu cache üzerinden dönebilir.
Backend ayarları:
$env:REDIS_CONNECTION="127.0.0.1:6379"
$env:TRACEMIND_CACHE_ENABLED="true"Alternatif ayar yolu:
{
"Cache": {
"Enabled": true,
"Connection": "127.0.0.1:6379",
"KeyPrefix": "tracemind:",
"RetrievalTtlMinutes": 20
}
}Cache kapsamı:
- Cache edilen alan: bilgi erişimi sonucundaki güvenli bilgi bankası parça metadatası.
- Cache anahtarı:
tracemind:prefix'i, domain, hata kodu ve güvenli hata ifadesi özetinden türetilen hash. - TTL: varsayılan 20 dakika.
- Gözlemlenebilirlik: backend loglarında retrieval cache hit/miss görülebilir; analiz yanıtında
cacheUsedveretrievalCacheHitalanları opsiyonel dönebilir.
SonarQube, yerel statik kod analizi için foundation sağlar. Runtime monitoring değildir; çalışan uygulama hatalarını izlemez. Kod kalitesi, maintainability, olası bug riskleri, tekrar eden kod ve temel güvenlik kokularını görünür hale getirir.
Panel:
http://127.0.0.1:9000
İlk kurulumda SonarQube arayüzünden proje token'ı oluşturun ve token'ı yalnızca env veya Jenkins credential üzerinden kullanın. Gerçek token repo içine yazılmamalıdır.
Frontend scan apps/frontend/sonar-project.properties ve apps/frontend/tsconfig.sonar.json dosyalarını kullanır. Coverage import için apps/frontend/coverage/tracemind-frontend/lcov.info beklenir.
Bu foundation quality gate zorlaması, PR decoration, SonarCloud veya enterprise branch stratejisi içermez. FastAPI AI servisi Python scan kapsamına alınmamıştır.
TraceMind, yerel CI pipeline foundation için Jenkins LTS servisi ve repo kökünde Jenkinsfile içerir. Pipeline build, test, coverage, kalite analizi hazırlığı ve Docker Compose yapı doğrulamasını tek akış altında toplar.
Jenkinsfile stage'leri:
- Checkout
- Environment Info
- Restore .NET Tools
- Backend Build
- Frontend Install
- Frontend Test Coverage
- Frontend Production Build
- Selenium UI Smoke Tests
- Frontend SonarQube Scan
- Backend SonarQube Scan
- Local PWA Deploy
- Docker Compose Config Check
Selenium UI stage'i opsiyoneldir. Jenkins job ortamında RUN_UI_TESTS=true verilmedikçe çalışmaz. Çalıştırılacaksa Jenkins agent üzerinde Chrome/Chromium bulunmalı ve E2E_BASE_URL erişilebilir bir Angular dev server veya statik preview adresini göstermelidir.
SonarQube stage'leri opsiyoneldir. Jenkins job ortamında SONAR_TOKEN yoksa güvenli şekilde skip edilir. Token kullanmak için Jenkins credential oluşturulmalı ve pipeline ortamına SONAR_TOKEN olarak bağlanmalıdır.
Bu foundation Docker socket mount etmez, image publish etmez, artifact registry kullanmaz, Kubernetes veya cloud deploy kurmaz. RUN_LOCAL_DEPLOY=true verilirse Local PWA Deploy stage'i production PWA çıktısını deploy/frontend-pwa/ klasörüne paketler. Bu yalnızca local preview deploy kanıtı içindir; cloud deploy, Docker image publish veya canlı ortam yayını değildir.
- AI service logları Elasticsearch'e doğrudan gönderilmez; JSON console logging foundation vardır.
- Hazır Kibana dashboard paketi yoktur; data view ve aramalar manuel oluşturulur.
- Jenkins pipeline cloud deploy yapmaz;
RUN_LOCAL_DEPLOY=trueile local PWA deploy/package kanıtı üretir. - Selenium UI testi smoke test foundation seviyesindedir; tam uçtan uca iş akışı kapsamı değildir.
- Ollama model yükleme ve inference latency değeri yerel donanıma göre yüksek olabilir.
- Enterprise auth, SSO, çok kiracılı yapı ve production secret management tamamlanmamıştır.
- PWA offline durumda AI/OCR/RAG çalıştırmaz; yalnızca kurulabilir frontend kabuğu sağlar.
- Bilgi bankası seçilmiş markdown dosyalarından oluşur; canlı dış kaynak senkronizasyonu yoktur.
- Manuel test setindeki ekran görüntüleri sentetiktir ve tekrarlanabilir yerel değerlendirme için kullanılır.
- Üretim ortamı için kimlik doğrulama ve yetkilendirme.
- Sentry release, sourcemap ve alarm yönetiminin sıkılaştırılması.
- Kibana dashboard ve log collector entegrasyonu.
- AI service için ayrı Python kalite analizi.
- Bilgi bankası yönetim ekranı.
- Daha geniş domain kapsamı ve gerçek vaka tabanlı test setleri.
- Deploy ve artifact publish akışlarının ayrıca tasarlanması.
RabbitMQ servisi teslim kanıtı için gerçek management UI sağlayan opsiyonel altyapı olarak eklenmiştir. Uygulamanın analyze pipeline'ı bu aşamada RabbitMQ kullanmaz ve herhangi bir mesaj kuyruğu entegrasyonu yapılmış gibi sunulmamalıdır. Yerel panel: http://127.0.0.1:15672. Kullanıcı adı ve şifre için infra/docker/.env.example içindeki örnek RABBITMQ_DEFAULT_USER ve RABBITMQ_DEFAULT_PASS değerleri kullanılabilir; gerçek secret repo dosyalarına yazılmaz.