# Test Coverage Plan (ខ្មែរ) 🌐 **Languages:** 🇺🇸 [English](../../../../ops/COVERAGE_PLAN.md) · 🇪🇹 [am](../../../am/docs/ops/COVERAGE_PLAN.md) · 🇸🇦 [ar](../../../ar/docs/ops/COVERAGE_PLAN.md) · 🇦🇿 [az](../../../az/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) · 🇮🇳 [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) --- បានធ្វើបច្ចុប្បន្នភាពចុងក្រោយ៖ 2026-06-28 > ស្ថានភាពដែលបានវាស់នៅ 2026-05-13៖ បន្ទាត់ 82.58%, សេចក្តីថ្លែងការណ៍ 82.58%, អនុគមន៍ 84.23%, សាខា 75.22%។ ដំណាក់កាល 1-5 បានបញ្ចប់។ ការផ្តោតបច្ចុប្បន្នគឺដំណាក់កាល 6 (>=85%) និងដំណាក់កាល 7 (>=90%)។ ## គោលមូលដ្ឋាន មានតួលេខគ្របដណ្តប់ច្រើន អាស្រ័យលើរបៀបគណនារបាយការណ៍។ សម្រាប់ការរៀបចំផែនការ មានតែមួយប៉ុណ្ណោះដែលមានប្រយោជន៍។ | រង្វាស់ | វិសាលភាព | សេចក្តីថ្លែងការណ៍ / បន្ទាត់ | សាខា | អនុគមន៍ | កំណត់សម្គាល់ | | ---------------------- | ---------------------------------------------------------------- | --------------------------: | -----: | ------: | ---------------------------------------------------------------- | | ប្រព័ន្ធចាស់ | `npm run test:coverage` ចាស់ | 79.42% | 75.15% | 67.94% | ខ្ពស់ជាងការពិត៖ រាប់បញ្ចូលឯកសារតេស្ត និងមិនរាប់បញ្ចូល `open-sse` | | សម្រាប់វិនិច្ឆ័យ | តែកូដប្រភព ដោយមិនរាប់បញ្ចូលការធ្វើតេស្ត និង `open-sse` | 68.16% | 63.55% | 64.06% | មានប្រយោជន៍សម្រាប់តែការផ្តាច់ `src/**` ឱ្យនៅដាច់ដោយឡែក | | គោលមូលដ្ឋានដែលបានណែនាំ | តែកូដប្រភព ដោយមិនរាប់បញ្ចូលការធ្វើតេស្ត និងរាប់បញ្ចូល `open-sse` | 82.58% | 75.22% | 84.23% | នេះជាគោលមូលដ្ឋានសម្រាប់គម្រោងទាំងមូលដែលត្រូវកែលម្អ | គោលមូលដ្ឋានដែលបានណែនាំគឺជាតួលេខដែលត្រូវធ្វើសុទិដ្ឋិនិយមឱ្យប្រសើរឡើង។ ## វិធាន - គោលដៅគ្របដណ្តប់អនុវត្តចំពោះឯកសារកូដប្រភព មិនមែន `tests/**` ទេ។ - `open-sse/**` គឺជាផ្នែកមួយនៃផលិតផល ហើយត្រូវតែស្ថិតក្នុងវិសាលភាព។ - កូដថ្មីមិនគួរកាត់បន្ថយការគ្របដណ្តប់នៅក្នុងតំបន់ដែលបានកែប្រែឡើយ។ - ផ្តល់អាទិភាពដល់ការធ្វើតេស្តឥរិយាបថ និងលទ្ធផលសាខា ជាជាងព័ត៌មានលម្អិតនៃការអនុវត្ត។ - សម្រាប់ `src/lib/db/**` គួរប្រើមូលដ្ឋានទិន្នន័យ SQLite បណ្តោះអាសន្ន និងទិន្នន័យសាកល្បងតូចៗ ជាជាងការក្លែងធ្វើទូលំទូលាយ។ ## សំណុំពាក្យបញ្ជាបច្ចុប្បន្ន - `npm run test:coverage` - ច្រកត្រួតពិនិត្យគ្របដណ្តប់កូដប្រភពចម្បងសម្រាប់សំណុំតេស្តឯកតា - បង្កើត `text-summary`, `html`, `json-summary` និង `lcov` - `npm run coverage:report` - របាយការណ៍លម្អិតតាមឯកសារនីមួយៗពីការដំណើរការចុងក្រោយ - `npm run test:coverage:legacy` - សម្រាប់តែការប្រៀបធៀបជាប្រវត្តិសាស្ត្រ ## គោលដៅតាមដំណាក់កាល | ដំណាក់កាល | គោលដៅ | ការផ្តោត | ស្ថានភាព | | ------------- | ------------------------------: | -------------------------------------------------------------------- | ------------- | | ដំណាក់កាលទី 1 | សេចក្តីថ្លែងការណ៍ / បន្ទាត់ 60% | លទ្ធផលរហ័ស និងការគ្របដណ្តប់ឧបករណ៍ប្រើប្រាស់ដែលមានហានិភ័យទាប | ✅ បានបញ្ចប់ | | ដំណាក់កាលទី 2 | សេចក្តីថ្លែងការណ៍ / បន្ទាត់ 65% | មូលដ្ឋានគ្រឹះនៃមូលដ្ឋានទិន្នន័យ និងផ្លូវ | ✅ បានបញ្ចប់ | | ដំណាក់កាលទី 3 | សេចក្តីថ្លែងការណ៍ / បន្ទាត់ 70% | ការផ្ទៀងផ្ទាត់អ្នកផ្តល់សេវា និងការវិភាគការប្រើប្រាស់ | ✅ បានបញ្ចប់ | | ដំណាក់កាលទី 4 | សេចក្តីថ្លែងការណ៍ / បន្ទាត់ 75% | កម្មវិធីបកប្រែ និងឧបករណ៍ជំនួយ `open-sse` | ✅ បានបញ្ចប់ | | ដំណាក់កាលទី 5 | សេចក្តីថ្លែងការណ៍ / បន្ទាត់ 80% | កម្មវិធីដោះស្រាយ និងសាខាប្រតិបត្តិករ `open-sse` | ✅ បានបញ្ចប់ | | ដំណាក់កាលទី 6 | សេចក្តីថ្លែងការណ៍ / បន្ទាត់ 85% | ករណីជាយដែលពិបាកជាងមុន បំណុលសាខា និងសំណុំតេស្តរ៉ឺក្រេស្យុង | កំពុងដំណើរការ | | ដំណាក់កាលទី 7 | សេចក្តីថ្លែងការណ៍ / បន្ទាត់ 90% | ការត្រួតពិនិត្យចុងក្រោយ ការបិទចន្លោះខ្វះខាត និងការរឹតបន្តឹងដ៏តឹងរ៉ឹង | កំពុងរង់ចាំ | សាខា និងអនុគមន៍គួរតែកើនឡើងជាបន្តបន្ទាប់ជាមួយដំណាក់កាលនីមួយៗ ប៉ុន្តែគោលដៅចម្បងដាច់ខាតគឺសេចក្តីថ្លែងការណ៍ / បន្ទាត់។ ## ចំណុចអាទិភាពសំខាន់ៗ ឯកសារទាំងនេះមានកម្រិតគ្របដណ្តប់តាមបន្ទាត់ទាបបំផុតនៅពេលបច្ចុប្បន្ន (< 60%) និងផ្តល់ផលតបស្នងល្អបំផុតសម្រាប់ដំណាក់កាល 6-7។ បានបង្កើតពី `coverage/coverage-summary.json` នៅថ្ងៃទី 2026-05-13៖ | # | ឯកសារ | បន្ទាត់ % | | --- | ------------------------------------------------------------ | --------: | | 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% | ប្រធានបទសម្រាប់ដំណាក់កាល 6-7៖ - `open-sse/services/compression/**` គឺជាក្រុមឯកសារដែលមានកម្រិតគ្របដណ្តប់ទាបក្រាស់បំផុត និងជាចំណែកធំបំផុតនៃគម្លាតដែលនៅសល់។ - ផ្លូវ API សម្រាប់ batch និង rerank (`src/app/api/v1/batches/**`, `src/app/api/v1/rerank/route.ts`) ត្រូវការការធ្វើតេស្តកម្រិត handler។ - អាដាប់ទ័រ cloud agent (`src/lib/cloudAgent/agents/jules.ts`, `codex.ts`) និង `tierResolver.ts` ត្រូវការការធ្វើតេស្តតាមសេណារីយ៉ូ។ - សមាសភាគ UI ឯកសារ និង `src/mitm/systemCommands.ts` មានអាទិភាពទាបជាង ប៉ុន្តែអាចទទួលបានការគ្របដណ្តប់ branch បន្ថែមដោយចំណាយតិច។ ## បញ្ជីត្រួតពិនិត្យការអនុវត្ត ### ដំណាក់កាល 1: 56.95% -> 60% - [x] កែតម្រូវរង្វាស់ការគ្របដណ្តប់ ដើម្បីឱ្យវាឆ្លុះបញ្ចាំងកូដប្រភពជំនួសឱ្យឯកសារតេស្ត - [x] រក្សាទុកស្គ្រីបការគ្របដណ្តប់ចាស់សម្រាប់ការប្រៀបធៀប - [x] កត់ត្រាកម្រិតមូលដ្ឋាន និងចំណុចសំខាន់ៗនៅក្នុង repository - [ ] បន្ថែមការធ្វើតេស្តដែលផ្តោតលើ utilities ដែលមានហានិភ័យទាប៖ - `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` - [ ] បន្ថែមការធ្វើតេស្តផ្លូវសម្រាប់៖ - `src/app/api/settings/require-login/route.ts` - `src/app/api/providers/[id]/models/route.ts` ### ដំណាក់កាល 2: 60% -> 65% - [ ] បន្ថែមការធ្វើតេស្តដែលគាំទ្រដោយ DB សម្រាប់៖ - `src/lib/db/modelComboMappings.ts` - `src/lib/db/settings.ts` - `src/lib/db/registeredKeys.ts` - [ ] គ្របដណ្តប់ឥរិយាបថ branch ក្នុង៖ - `src/lib/providers/validation.ts` - `src/app/api/v1/embeddings/route.ts` - `src/app/api/v1/moderations/route.ts` ### ដំណាក់កាល 3: 65% -> 70% - [ ] បន្ថែមការធ្វើតេស្តវិភាគការប្រើប្រាស់សម្រាប់៖ - `src/lib/usage/usageHistory.ts` - `src/lib/usage/usageStats.ts` - `src/lib/usage/costCalculator.ts` - [ ] ពង្រីកការគ្របដណ្តប់ផ្លូវសម្រាប់ការគ្រប់គ្រង proxy និង branch នៃការកំណត់ ### ដំណាក់កាល 4: 70% -> 75% - [ ] គ្របដណ្តប់ helpers របស់ translator និងផ្លូវបកប្រែស្នូល៖ - `open-sse/translator/index.ts` - `open-sse/translator/helpers/*` - `open-sse/translator/request/*` - `open-sse/translator/response/*` ### ដំណាក់កាល 5: 75% -> 80% - [ ] បន្ថែមការធ្វើតេស្តកម្រិត handler សម្រាប់៖ - `open-sse/handlers/chatCore.ts` - `open-sse/handlers/responsesHandler.js` - `open-sse/handlers/imageGeneration.js` - `open-sse/handlers/embeddings.js` - [ ] បន្ថែមការគ្របដណ្តប់ branch របស់ executor សម្រាប់ការផ្ទៀងផ្ទាត់អត្តសញ្ញាណតាម provider ជាក់លាក់ ការព្យាយាមឡើងវិញ និងការកំណត់ endpoint ជំនួស ### ដំណាក់កាល 6: 80% -> 85% - [ ] បញ្ចូលសំណុំតេស្ត edge case បន្ថែមទៅក្នុងផ្លូវគ្របដណ្តប់ចម្បង - [ ] បង្កើនការគ្របដណ្តប់ function សម្រាប់ម៉ូឌុល DB ដែលមានការគ្របដណ្តប់ constructor/helper ខ្សោយ - [ ] បិទគម្លាត branch ក្នុង `settings.ts`, `registeredKeys.ts`, `validation.ts` និង translator helpers ### ដំណាក់កាល 7: 85% -> 90% - [ ] ចាត់ទុកឯកសារដែលមានកម្រិតគ្របដណ្តប់ទាបនៅសល់ជាឧបសគ្គរាំងខ្ទប់ - [ ] បន្ថែមការធ្វើតេស្ត regression សម្រាប់ production bug ដែលមិនទាន់គ្របដណ្តប់នីមួយៗ ដែលបានកែតម្រូវក្នុងអំឡុងការជំរុញឱ្យដល់ 90% - [ ] ដំឡើងកម្រិតអប្បបរមានៃការគ្របដណ្តប់ក្នុង CI បន្ទាប់ពីកម្រិតមូលដ្ឋាន local មានស្ថិរភាពយ៉ាងហោចណាស់ពីរដងជាប់ៗគ្នាប៉ុណ្ណោះ ## គោលការណ៍ Ratchet ធ្វើបច្ចុប្បន្នភាពកម្រិតអប្បបរមារបស់ `npm run test:coverage` តែបន្ទាប់ពីគម្រោងពិតជាលើសគោលដៅបន្ទាប់ ដោយមានគម្លាតសុវត្ថិភាពគ្រប់គ្រាន់ប៉ុណ្ណោះ។ **កម្រិតបច្ចុប្បន្ន៖** `npm run test:coverage` អនុវត្តកម្រិតអប្បបរមា **60 សេចក្តីបញ្ជា / 60 បន្ទាត់ / 60 មុខងារ / 60 សាខា** (ម៉ែត្រនេះត្រូវបានកំណត់មូលដ្ឋានឡើងវិញក្នុង Quality-Gates Fase 6A.1 — មូលដ្ឋាន 82.58% ពីមុនត្រូវបានបំប៉ោង ពីព្រោះវាបានរាប់បញ្ចូលឯកសារសាកល្បង និងមិនបានរាប់បញ្ចូល `open-sse`)។ ពាក្យបញ្ជា `test:coverage:legacy` រក្សាទុកម៉ែត្រចាស់ 50/50/50 សម្រាប់ការប្រៀបធៀបជាប្រវត្តិសាស្ត្រ។ សម្រាប់ការត្រួតពិនិត្យកម្រិតអប្បបរមាបែបម្តងម្កាល ដោយផ្អែកលើរបាយការណ៍ចុងក្រោយ សូមប្រើ៖ ```bash node scripts/check/test-report-summary.mjs --threshold 75 ``` លំដាប់ Ratchet ដែលបានណែនាំ (លំដាប់គឺ `សេចក្តីបញ្ជា-បន្ទាត់ / សាខា / មុខងារ`)៖ 1. 55/60/55 2. 60/62/58 3. 65/64/62 4. 70/66/66 5. 75/70/72 <-- កម្រិតបច្ចុប្បន្ន (75/70/75) 6. 80/75/78 7. 85/80/84 8. 90/85/88 គោលដៅ Ratchet បន្ទាប់គឺ `80/75/78` នៅពេលដែលវិសាលភាពគ្របដណ្តប់សាខារក្សាបានលើស 78% ក្នុងការដំណើរការពីរលើកជាប់គ្នា។ ## ចន្លោះខ្វះខាតដែលបានដឹង ពាក្យបញ្ជាវិសាលភាពគ្របដណ្តប់បច្ចុប្បន្ន វាស់វែងសំណុំការសាកល្បងឯកតា Node សំខាន់ ហើយរាប់បញ្ចូលកូដប្រភពដែលបានឈានដល់ពីសំណុំនោះ រួមទាំង `open-sse`។ វាមិនទាន់បញ្ចូលវិសាលភាពគ្របដណ្តប់របស់ Vitest ទៅក្នុងរបាយការណ៍រួមតែមួយនៅឡើយទេ។ ការបញ្ចូលគ្នានោះគួរតែធ្វើនៅពេលក្រោយ ប៉ុន្តែវាមិនមែនជាឧបសគ្គចំពោះការចាប់ផ្តើមបង្កើនពី 60% -> 80% នោះទេ។