# Test Coverage Plan (Azərbaycan dili) 🌐 **Languages:** 🇺🇸 [English](../../../../ops/COVERAGE_PLAN.md) · 🇪🇹 [am](../../../am/docs/ops/COVERAGE_PLAN.md) · 🇸🇦 [ar](../../../ar/docs/ops/COVERAGE_PLAN.md) · 🇧🇬 [bg](../../../bg/docs/ops/COVERAGE_PLAN.md) · 🇧🇩 [bn](../../../bn/docs/ops/COVERAGE_PLAN.md) · 🇧🇦 [bs](../../../bs/docs/ops/COVERAGE_PLAN.md) · 🇨🇿 [cs](../../../cs/docs/ops/COVERAGE_PLAN.md) · 🇩🇰 [da](../../../da/docs/ops/COVERAGE_PLAN.md) · 🇩🇪 [de](../../../de/docs/ops/COVERAGE_PLAN.md) · 🇬🇷 [el](../../../el/docs/ops/COVERAGE_PLAN.md) · 🇪🇸 [es](../../../es/docs/ops/COVERAGE_PLAN.md) · 🇪🇪 [et](../../../et/docs/ops/COVERAGE_PLAN.md) · 🇮🇷 [fa](../../../fa/docs/ops/COVERAGE_PLAN.md) · 🇫🇮 [fi](../../../fi/docs/ops/COVERAGE_PLAN.md) · 🇫🇷 [fr](../../../fr/docs/ops/COVERAGE_PLAN.md) · 🇮🇪 [ga](../../../ga/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [gu](../../../gu/docs/ops/COVERAGE_PLAN.md) · 🇳🇬 [ha](../../../ha/docs/ops/COVERAGE_PLAN.md) · 🇮🇱 [he](../../../he/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [hi](../../../hi/docs/ops/COVERAGE_PLAN.md) · 🇭🇷 [hr](../../../hr/docs/ops/COVERAGE_PLAN.md) · 🇭🇺 [hu](../../../hu/docs/ops/COVERAGE_PLAN.md) · 🇦🇲 [hy](../../../hy/docs/ops/COVERAGE_PLAN.md) · 🇮🇩 [id](../../../id/docs/ops/COVERAGE_PLAN.md) · 🇳🇬 [ig](../../../ig/docs/ops/COVERAGE_PLAN.md) · 🇮🇹 [it](../../../it/docs/ops/COVERAGE_PLAN.md) · 🇯🇵 [ja](../../../ja/docs/ops/COVERAGE_PLAN.md) · 🇬🇪 [ka](../../../ka/docs/ops/COVERAGE_PLAN.md) · 🇰🇭 [km](../../../km/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [kn](../../../kn/docs/ops/COVERAGE_PLAN.md) · 🇰🇷 [ko](../../../ko/docs/ops/COVERAGE_PLAN.md) · 🇱🇹 [lt](../../../lt/docs/ops/COVERAGE_PLAN.md) · 🇱🇻 [lv](../../../lv/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [ml](../../../ml/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [mr](../../../mr/docs/ops/COVERAGE_PLAN.md) · 🇲🇾 [ms](../../../ms/docs/ops/COVERAGE_PLAN.md) · 🇲🇹 [mt](../../../mt/docs/ops/COVERAGE_PLAN.md) · 🇲🇲 [my](../../../my/docs/ops/COVERAGE_PLAN.md) · 🇳🇵 [ne](../../../ne/docs/ops/COVERAGE_PLAN.md) · 🇳🇱 [nl](../../../nl/docs/ops/COVERAGE_PLAN.md) · 🇳🇴 [no](../../../no/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [or](../../../or/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [pa](../../../pa/docs/ops/COVERAGE_PLAN.md) · 🇵🇭 [phi](../../../phi/docs/ops/COVERAGE_PLAN.md) · 🇵🇱 [pl](../../../pl/docs/ops/COVERAGE_PLAN.md) · 🇵🇹 [pt](../../../pt/docs/ops/COVERAGE_PLAN.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/ops/COVERAGE_PLAN.md) · 🇷🇴 [ro](../../../ro/docs/ops/COVERAGE_PLAN.md) · 🇷🇺 [ru](../../../ru/docs/ops/COVERAGE_PLAN.md) · 🇱🇰 [si](../../../si/docs/ops/COVERAGE_PLAN.md) · 🇸🇰 [sk](../../../sk/docs/ops/COVERAGE_PLAN.md) · 🇸🇮 [sl](../../../sl/docs/ops/COVERAGE_PLAN.md) · 🇷🇸 [sr](../../../sr/docs/ops/COVERAGE_PLAN.md) · 🇸🇪 [sv](../../../sv/docs/ops/COVERAGE_PLAN.md) · 🇰🇪 [sw](../../../sw/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [ta](../../../ta/docs/ops/COVERAGE_PLAN.md) · 🇮🇳 [te](../../../te/docs/ops/COVERAGE_PLAN.md) · 🇹🇭 [th](../../../th/docs/ops/COVERAGE_PLAN.md) · 🇹🇷 [tr](../../../tr/docs/ops/COVERAGE_PLAN.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/ops/COVERAGE_PLAN.md) · 🇵🇰 [ur](../../../ur/docs/ops/COVERAGE_PLAN.md) · 🇺🇿 [uz](../../../uz/docs/ops/COVERAGE_PLAN.md) · 🇻🇳 [vi](../../../vi/docs/ops/COVERAGE_PLAN.md) · 🇳🇬 [yo](../../../yo/docs/ops/COVERAGE_PLAN.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/ops/COVERAGE_PLAN.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/ops/COVERAGE_PLAN.md) --- Son yenilənmə: 2026-06-28 > 2026-05-13 tarixində ölçülmüş vəziyyət: sətirlər 82.58%, ifadələr 82.58%, funksiyalar 84.23%, budaqlar 75.22%. Mərhələ 1-5 tamamlanıb. Cari diqqət Mərhələ 6 (>=85%) və Mərhələ 7-yə (>=90%) yönəlib. ## İlkin göstərici Hesabatın hesablanma üsulundan asılı olaraq bir neçə əhatə göstəricisi mövcuddur. Planlaşdırma üçün onlardan yalnız biri faydalıdır. | Metrika | Əhatə dairəsi | İfadələr / Sətirlər | Budaqlar | Funksiyalar | Qeydlər | | ------------------------------ | ------------------------------------------------------------------- | ------------------: | -------: | ----------: | ---------------------------------------------------------------- | | Köhnə | Köhnə `npm run test:coverage` | 79.42% | 75.15% | 67.94% | Şişirdilib: test fayllarını sayır və `open-sse`-ni istisna edir | | Diaqnostik | Yalnız mənbə, testlər və `open-sse` istisna olmaqla | 68.16% | 63.55% | 64.06% | Yalnız `src/**`-i təcrid etmək üçün faydalıdır | | Tövsiyə olunan ilkin göstərici | Yalnız mənbə, testlər istisna olmaqla və `open-sse` daxil edilməklə | 82.58% | 75.22% | 84.23% | Bu, təkmilləşdirilməli olan layihə üzrə ümumi ilkin göstəricidir | Optimallaşdırma tövsiyə olunan ilkin göstəriciyə əsasən aparılmalıdır. ## Qaydalar - Əhatə hədəfləri `tests/**` üçün deyil, mənbə faylları üçün tətbiq olunur. - `open-sse/**` məhsulun bir hissəsidir və əhatə dairəsində qalmalıdır. - Yeni kod toxunulan sahələrdə əhatəni azaltmamalıdır. - Tətbiq detalları əvəzinə davranışın və budaqlanma nəticələrinin sınaqdan keçirilməsinə üstünlük verin. - `src/lib/db/**` üçün geniş miqyaslı moklar əvəzinə müvəqqəti SQLite verilənlər bazalarına və kiçik sınaq məlumatlarına üstünlük verin. ## Cari əmrlər dəsti - `npm run test:coverage` - Vahid testlər dəsti üçün əsas mənbə əhatəsi həddi - `text-summary`, `html`, `json-summary` və `lcov` yaradır - `npm run coverage:report` - Son icradan əldə edilən fayl-fayl ətraflı hesabat - `npm run test:coverage:legacy` - Yalnız tarixi müqayisə üçün ## Mərhələlər | Mərhələ | Hədəf | Diqqət istiqaməti | Vəziyyət | | --------- | ----------------------: | ----------------------------------------------------------------- | ------------- | | Mərhələ 1 | 60% ifadələr / sətirlər | Sürətli nəticələr və aşağı riskli utilit əhatəsi | ✅ Tamamlanıb | | Mərhələ 2 | 65% ifadələr / sətirlər | DB və marşrut təməlləri | ✅ Tamamlanıb | | Mərhələ 3 | 70% ifadələr / sətirlər | Provayder yoxlaması və istifadə analitikası | ✅ Tamamlanıb | | Mərhələ 4 | 75% ifadələr / sətirlər | `open-sse` çeviriciləri və köməkçi vasitələri | ✅ Tamamlanıb | | Mərhələ 5 | 80% ifadələr / sətirlər | `open-sse` emalçıları və icraedici budaqları | ✅ Tamamlanıb | | Mərhələ 6 | 85% ifadələr / sətirlər | Daha çətin sərhəd halları, budaq borcu, reqressiya dəstləri | Davam edir | | Mərhələ 7 | 90% ifadələr / sətirlər | Yekun baxış, boşluqların aradan qaldırılması, sərt mərhələli hədd | Gözləmədə | Budaqlar və funksiyalar hər mərhələ ilə yüksəlməlidir, lakin əsas sərt hədəf ifadələr / sətirlərdir. ## Prioritetli qaynar nöqtələr Bu fayllar hazırda ən aşağı sətir əhatəsinə (< 60%) malikdir və Mərhələ 6-7 üçün ən yaxşı nəticəni vəd edir. 2026-05-13 tarixində `coverage/coverage-summary.json` faylından yaradılıb: | # | Fayl | Sətirlər % | | --- | ------------------------------------------------------------ | ---------: | | 1 | `open-sse/services/compression/validation.ts` | 7.87% | | 2 | `src/app/api/v1/batches/route.ts` | 9.67% | | 3 | `src/app/docs/components/FeedbackWidget.tsx` | 9.80% | | 4 | `open-sse/services/compression/toolResultCompressor.ts` | 10.00% | | 5 | `src/app/docs/components/DocCodeBlocks.tsx` | 10.63% | | 6 | `open-sse/services/compression/engines/rtk/lineFilter.ts` | 10.96% | | 7 | `open-sse/services/specificityRules.ts` | 11.28% | | 8 | `src/mitm/systemCommands.ts` | 12.19% | | 9 | `open-sse/services/compression/aggressive.ts` | 12.77% | | 10 | `src/app/api/v1/batches/[id]/cancel/route.ts` | 12.98% | | 11 | `open-sse/services/compression/progressiveAging.ts` | 13.26% | | 12 | `open-sse/services/compression/engines/rtk/smartTruncate.ts` | 13.43% | | 13 | `open-sse/services/compression/engines/rtk/deduplicator.ts` | 13.51% | | 14 | `src/lib/cloudAgent/agents/jules.ts` | 13.52% | | 15 | `open-sse/services/compression/lite.ts` | 14.46% | | 16 | `src/app/api/v1/rerank/route.ts` | 14.94% | | 17 | `open-sse/services/compression/preservation.ts` | 15.07% | | 18 | `src/lib/cloudAgent/agents/codex.ts` | 15.54% | | 19 | `open-sse/services/tierResolver.ts` | 16.66% | | 20 | `src/app/docs/components/DocsLazyWrapper.tsx` | 16.66% | Mərhələ 6-7 üçün mövzular: - `open-sse/services/compression/**` aşağı əhatəli faylların ən sıx klasteridir və qalan fərqin böyük hissəsini təşkil edir. - Paket və yenidən sıralama API marşrutları (`src/app/api/v1/batches/**`, `src/app/api/v1/rerank/route.ts`) işləyici səviyyəsində testlər tələb edir. - Bulud agenti adapterləri (`src/lib/cloudAgent/agents/jules.ts`, `codex.ts`) və `tierResolver.ts` ssenari testləri tələb edir. - Sənədlər UI komponentləri və `src/mitm/systemCommands.ts` daha aşağı prioritetlidir, lakin budaqların əhatəsini asanlıqla artırmağa imkan verir. ## İcra yoxlama siyahısı ### Mərhələ 1: 56.95% -> 60% - [x] Əhatə metrikasını test faylları əvəzinə mənbə kodunu əks etdirəcək şəkildə düzəltmək - [x] Müqayisə üçün köhnə əhatə skriptini saxlamaq - [x] İlkin göstəriciləri və qaynar nöqtələri repozitoriyada qeyd etmək - [ ] Aşağı riskli utilitlər üçün məqsədyönlü testlər əlavə etmək: - `src/shared/utils/upstreamError.ts` - `src/shared/utils/fetchTimeout.ts` - `src/lib/api/errorResponse.ts` - `src/shared/utils/apiAuth.ts` - `src/lib/display/names.ts` - [ ] Aşağıdakılar üçün marşrut testləri əlavə etmək: - `src/app/api/settings/require-login/route.ts` - `src/app/api/providers/[id]/models/route.ts` ### Mərhələ 2: 60% -> 65% - [ ] Aşağıdakılar üçün verilənlər bazası dəstəkli testlər əlavə etmək: - `src/lib/db/modelComboMappings.ts` - `src/lib/db/settings.ts` - `src/lib/db/registeredKeys.ts` - [ ] Aşağıdakılarda budaq davranışını əhatə etmək: - `src/lib/providers/validation.ts` - `src/app/api/v1/embeddings/route.ts` - `src/app/api/v1/moderations/route.ts` ### Mərhələ 3: 65% -> 70% - [ ] Aşağıdakılar üçün istifadə analitikası testləri əlavə etmək: - `src/lib/usage/usageHistory.ts` - `src/lib/usage/usageStats.ts` - `src/lib/usage/costCalculator.ts` - [ ] Proksi idarəetməsi və parametrlərin budaqları üçün marşrut əhatəsini genişləndirmək ### Mərhələ 4: 70% -> 75% - [ ] Tərcüməçi köməkçilərini və əsas tərcümə yollarını əhatə etmək: - `open-sse/translator/index.ts` - `open-sse/translator/helpers/*` - `open-sse/translator/request/*` - `open-sse/translator/response/*` ### Mərhələ 5: 75% -> 80% - [ ] Aşağıdakılar üçün işləyici səviyyəsində testlər əlavə etmək: - `open-sse/handlers/chatCore.ts` - `open-sse/handlers/responsesHandler.js` - `open-sse/handlers/imageGeneration.js` - `open-sse/handlers/embeddings.js` - [ ] Provayderə xas autentifikasiya, təkrar cəhdlər və son nöqtə əvəzləmələri üçün icraçı budaqlarının əhatəsini əlavə etmək ### Mərhələ 6: 80% -> 85% - [ ] Daha çox sərhəd halı test dəstini əsas əhatə yoluna birləşdirmək - [ ] Zəif konstruktor/köməkçi əhatəsinə malik verilənlər bazası modulları üçün funksiya əhatəsini artırmaq - [ ] `settings.ts`, `registeredKeys.ts`, `validation.ts` və tərcüməçi köməkçilərindəki budaq boşluqlarını aradan qaldırmaq ### Mərhələ 7: 85% -> 90% - [ ] Qalan aşağı əhatəli faylları bloklayıcı kimi qəbul etmək - [ ] 90%-ə çatmaq prosesi zamanı düzəldilən hər bir əhatə olunmamış istehsal xətası üçün reqressiya testləri əlavə etmək - [ ] Yalnız lokal ilkin göstərici ən azı iki ardıcıl icra ərzində sabit qaldıqdan sonra CI-də əhatə həddini yüksəltmək ## Ratchet siyasəti `npm run test:coverage` hədlərini yalnız layihə növbəti mərhələni rahat ehtiyatla faktiki olaraq keçdikdən sonra yeniləyin. **Cari keçid həddi:** `npm run test:coverage` **60 ifadə / 60 sətir / 60 funksiya / 60 budaq** tələb edir (metrik Quality-Gates Mərhələ 6A.1-də yenidən əsaslandırılıb — əvvəlki 82.58% baza göstəricisi test fayllarını saydığı və `open-sse`-ni istisna etdiyi üçün süni şəkildə yüksək idi). `test:coverage:legacy` əmri tarixi müqayisə üçün köhnə 50/50/50 metrikini qoruyur. Ən son hesabata əsasən xüsusi hədd yoxlamaları üçün istifadə edin: ```bash node scripts/check/test-report-summary.mjs --threshold 75 ``` Tövsiyə olunan ratchet ardıcıllığı (sıralama `ifadələr-sətirlər / budaqlar / funksiyalar` şəklindədir): 1. 55/60/55 2. 60/62/58 3. 65/64/62 4. 70/66/66 5. 75/70/72 <-- cari keçid həddi (75/70/75) 6. 80/75/78 7. 85/80/84 8. 90/85/88 Budaq əhatəsi ardıcıl iki icrada 78%-dən yuxarı qaldıqdan sonra növbəti ratchet hədəfi `80/75/78` olacaq. ## Məlum boşluq Cari əhatə əmri əsas Node modul test dəstini ölçür və ondan icra edilən mənbə kodunu, o cümlədən `open-sse`-ni əhatə edir. O, hələlik Vitest əhatəsini vahid hesabatda birləşdirmir. Bu birləşdirməni daha sonra etmək məqsədəuyğundur, lakin bu, 60%-dən 80%-ə yüksəlişə başlamaq üçün maneə deyil.