UDENTIVA Platform Pengurusan Pergigian Pintar
KUALITI PERISIAN & KEMATANGAN PROSES

Proses Pembangunan Perisian Kami & Pematuhan SPICE

UDENTIVA menanam kematangan proses yang dicari untuk perisian kesihatan ke dalam seni bina itu sendiri. Halaman ini memaparkan kitaran hayat pembangunan kami, tahap keupayaan SPICE / ISO-IEC 15504, mekanisme pengelogan ralat dan kawalan berterusan kami, kriteria versi dan keselamatan kami serta sejarah pembangunan kami dengan bukti.

Asas: Peraturan tentang Sistem Pengurusan Maklumat Kesihatan (MevzuatNo 39682) m.6 dan m.20 — keperluan pensijilan kualiti perisian (CMMI/SPICE).

Seni bina proses UDENTIVA ialah pendekatan pengurusan kualiti dan proses perisian yang selaras dengan prinsip SPICE / ISO-IEC 15504 dan bersedia untuk diaudit.

Definisi proses, pelaksanaan dan produk kerja yang boleh dijejaki telah distrukturkan; mekanisme pengukuran kuantitatif, pencegahan kecacatan dan penambahbaikan berterusan dijalankan dalam pengeluaran. Pernyataan tahap keupayaan rasmi tertakluk kepada skop penilaian bebas (appraisal).

Tahap Keupayaan SPICE

SPICE menilai proses pada tahap keupayaan 0 hingga 5. UDENTIVA distrukturkan untuk memenuhi jangkaan Tahap 1-3 pada peringkat takrifan proses/pelaksanaan/produk kerja yang boleh dikesan; bagi Tahap 4-5, mekanisme pengukuran kuantitatif dan penambahbaikan berterusan dijalankan. Pengisytiharan tahap rasmi tertakluk kepada penilaian bebas.

0
Eksik (Incomplete)
Proses tidak dilaksanakan/tidak mencapai sasaran.
1
Dilaksanakan (Performed)
Proses wujud dan menghasilkan output.
2
Diurus (Managed)
Proses dirancang, dipantau; produk kerja diurus.
3
Mantap (Established)
Proses standard yang ditakrifkan dilaksanakan secara konsisten di seluruh projek.
4
Boleh diramal (Predictable)
Proses dikawal secara kuantitatif (dengan pengukuran).
5
Optimize Eden (Optimizing)
Penambahbaikan berterusan + pencegahan kecacatan + inovasi proses.

Mekanisme kawalan kuantitatif dan penambahbaikan berterusan bagi Tahap 4-5 dijalankan di bawah dengan buktinya (pengukuran langsung, log ralat/CAPA, rekod pengedaran).

Kawasan Proses SPICE → Pelaksanaan → Bukti

Setiap kawasan proses sepadan dengan pelaksanaan konkrit dan bukti yang boleh diaudit dalam UDENTIVA. Proses bukanlah satu dokumen, tetapi kod yang berfungsi.

Kawasan ProsesAplikasi UDENTIVABukti
ENG.1 Pengekstrakan KeperluanPeta fasa + definisi keperluan vertical slice; sewa projek UDENTIVA.md mengunci keperluan.UDENTIVA.md (PERATURAN EMAS), spesifikasi teknikal 02_tech_spec/, peta fasa/modul
ENG.4 Reka Bentuk PerisianMonolit bermodul; pakej konteks (context) tidak berkongsi jadual satu sama lain; komunikasi melalui antara muka (interface); perkhidmatan luar = adapter.peraturan sempadan internal/{identity,patient,billing,export,...}; ADR-001..008
ENG.5 Pembinaan PerisianSQL terbuka (sqlc, tiada ORM); context ialah parameter pertama dalam setiap fungsi; pembalut ralat %w; wang = numeric.override jenis sqlc.yaml (numeric→string), db/queries/*.sql, gofmt/golangci-lint
ENG.6 Integrasi PerisianRantaian loopback PHP(BFF) ↔ Go ↔ PostgreSQL ↔ Redis; satu-satunya permukaan public.web/core/ApiClient, kesihatan komponen /healthz (db+redis)
ENG.7 Ujian PerisianUjian pengasingan cross-tenant (paling kritikal), idempotency, pertembungan temu janji, ketepatan wang, 2FA/OTP, vektor TOTP RFC6238, QR (pengesahan OpenCV+ISO).internal/integration/*_test.go, platform/totp/totp_test.go, go test ./...
SUP.1 Jaminan KualitiSetiap PR wajib mematuhi PERATURAN EMAS; lint bersih; jika ujian pengasingan merah dalam CI tiada merge.golangci-lint, Definition of Done kontrol listesi
SUP.8 Pengurusan KonfigurasiKawalan versi Git (branch core); pemversian skema bersiri goose; artefak build disandarkan.git, goose_db_version tablosu, .tools/deploy yedekleri
SUP.9 Penyelesaian MasalahRekod audit append-only + outbox e-mel/SMS (setiap rekod penghantaran) + disiplin sandaran/rollback deploy.audit_log, email_outbox/sms_outbox, bin/server.exe.bak-* rollback
SUP.10 Pengurusan Permintaan PerubahanSetiap perubahan skema ialah migration bernombor baharu; boleh dibatalkan (goose Down); kelulusan classifier deploy.db/migrations/0001..0027, +goose Up/Down
MAN.3 Pengurusan ProjekPenyampaian vertical-slice (setiap slice berfungsi dari hujung ke hujung); nota serahan sesi.super-devam.md, faz tablosu (DoD per dilim)
MAN.6 PengukuranPemeriksaan kesihatan, pengukuran kapasiti, metrik penghantaran e-mel/SMS, jumlah audit, telemetri event langsung./healthz, papan pemuka Pemantauan Proses & Kualiti (event/ralat/deploy/KPI)

Seni Bina Berlapis & Keselamatan Data

Tanggungjawab dibahagikan kepada lapisan; autoriti domain berada di satu titik dan diasingkan melalui loopback. Pelayar hanya melihat BFF nipis dan tidak sekali-kali boleh mengakses lapisan domain dan data secara langsung.

LapisanTanggungjawab & KeselamatanLokasi
Sunum (BFF)PHP 8.4 — BFF nipis: sesi, render, CSRF, penghalaan. TIADA peraturan perniagaan/DB. Satu-satunya permukaan public (IIS:443).web/
Uygulama / DomainMonolit bermodul Go — SATU-SATUNYA autoriti domain. RBAC, peraturan perniagaan, transaction. Hanya mendengar 127.0.0.1.api/internal/
VeriPostgreSQL — setiap jadual tenant_id + RLS FORCE; SQL terbuka (sqlc), berparameter. Wang numeric.api/db/
Cache / Baris GilirRedis — sesi, idempotency, kunci teragih, baris gilir asynq (SMS/e-fatura).platform/redisx
Nesne DepolamaSerasi S3 — fail besar (X-ray) presigned/stream; blob tidak sekali-kali dalam DB.platform/storage
Perkhidmatan Luar (adapter)e-Fatura, SMS(NetGSM), e-mel(SMTP), (kelak e-Nabız/MEDULA/DICOM) — diabstrak di belakang interface.internal/notify

Pengukuran Kuantitatif & KPI — Telemetri Proses Langsung

Pengukuran bukanlah satu pernyataan, tetapi sistem yang berfungsi. Semua operasi dikira secara langsung (kejayaan/kegagalan), ralat pengeluaran ditangkap dalam log kekal, dan rangka kerja KPI di bawah dikaitkan dengan tindakan berkala. Sumber data ialah jadual sebenar: event_counter (kaunter operasi langsung), error_log (log ralat kekal), deploy_log (log penggunaan).

Kawasan PengukuranKPISasaranSumber DataTempohTindakan
Keselamatan pengasingan tenantcross-tenant test fail0CI / izolasyon testiher PRSekatan merge
Ralat pengeluaranralat terbuka (5xx/panic)0error_log (kekal)berterusan/langsungRCA + CAPA zorunlu
Kadar kejayaan operasisuccess / toplam event≥ 99%event_counter (langsung)berterusan/langsungPunca utama semasa penurunan
Masa penyelesaianMTTR (purata penyelesaian)↓ trend menurunerror_log (resolved)bulananTrend incelemesi
Kebolehpercayaan penyebarankadar rollback< %5deploy_log30 hariRollback review
Keselamatan identiti2FA/OTP kritik olay0audit + event_counterbulananPengukuhan
Kebolehpercayaan pemesejanSMS/e-posta failure↓ rendah*_outboxharianReview penyedia
Kesediaan pemulihankejayaan ujian restore%100DR test (hedef)suku tahunanKemas kini Runbook
KPI ini dipantau secara masa nyata dari papan pemuka langsung "Pemantauan Proses & Kualiti" yang diakses oleh pengendali platform: kadar kejayaan transaksi, bilangan ralat terbuka, MTTR (purata masa penyelesaian), bilangan pengedaran dan kadar rollback.

Kitaran Pencegahan Kecacatan & Penambahbaikan Berterusan (RCA/CAPA)

Setiap ralat pengeluaran melalui kitaran punca akar standard (RCA) dan tindakan pembetulan/pencegahan (CAPA); pengulangan ralat yang sama dicegah dengan kawalan regresi dan penjejakan tren.

1
Rekod insiden / ralat

Ralat pengeluaran (5xx/panic) ditangkap secara automatik → error_log kekal (pada pengulangan tandatangan yang sama count++, trend kecacatan).

2
Pengelasan

Tahap (error/panic), kesan dan bilangan pengulangan ditentukan; kelaziman diukur dengan pembilang event yang gagal.

3
Punca utama (RCA)

Analisis punca utama dijalankan dan direkodkan pada papan pemuka Pemantauan Proses.

4
Tindakan pembetulan/pencegahan (CAPA)

Tindakan pembetulan + tindakan pencegahan (kod, ujian, peraturan migration, kawalan keselamatan) ditakrifkan dan direkodkan.

5
Kawalan regresi

Ujian/peraturan yang menghalang pengulangan ralat yang sama ditambah; dipantau dengan telemetri berterusan.

6
Trend incelemesi

Trend KPI (MTTR, kadar ralat, rollback) dinilai secara berkala; tindakan peringkat-proses dibuka untuk ralat berulang.

Mekanisme Yang Dilaksanakan — Pengelogan Ralat Berterusan, Kawalan & Penambahbaikan

Intipati SPICE Tahap 5: log ralat berterusan, dikawal dengan rapi, pencegahan kecacatan dan penambahbaikan berterusan. UDENTIVA menjalankan mekanisme ini dalam pengeluaran.

Pengelogan Ralat Berterusan

audit_log yang tidak boleh diubah (append-only) merekodkan setiap operasi kritikal secara kekal; email_outbox/sms_outbox merekodkan setiap penghantaran (status, attempts, error). Tiada peristiwa hilang secara senyap.

audit_log, *_outbox (status/error/attempts)
Kawalan Ralat & Pembatalan

Sampul ralat yang konsisten {error:{code,message}}; ralat/stack dalaman tidak sekali-kali dibocorkan. Sandaran binary + web sebelum setiap deploy; semasa outage rollback dalam beberapa saat dengan bin/server.exe.bak-*.

httpx.Error, deploy yedek/rollback runbook
Pencegahan Kecacatan (Defect Prevention)

Seni bina fail-closed: jika tiada konteks RLS 0 baris; idempotency menghalang operasi berganda; wang numeric menjadikan ralat float mustahil; whitelist (dataset export) menghalang suntikan SQL. Ralat dihalang dari awal melalui reka bentuk.

RLS FORCE, Idempotency-Key SETNX, numeric, view whitelist
Pengesahan Bebas

Komponen kritikal disahkan dengan dua kaedah bebas: vektor ujian TOTP RFC6238, decode OpenCV cv2 + codeword rujukan ISO/IEC 18004 untuk QR, ujian pengasingan cross-tenant.

ujian integration + pengesahan decoder luaran
Kitaran Penambahbaikan Berterusan

Audit keselamatan setiap sesi → penemuan → pengukuhan (cth. RBAC fasa2/fasa3 ditambah, 2FA, Export API). Memori korporat dipelihara dengan nota proses (super-devam.md).

audit keselamatan → kitaran pengukuhan
Inovasi Proses

Permintaan regulasi baharu (VEM Görüntüsü) ditukar terus kepada ciri produk dan bukti; perubahan perundangan dipantau secara berterusan dan dicatatkan pada peta pematuhan.

Export API/VEM views, peta pematuhan /mevzuat

Kawalan Edisi (Sürüm)

Satu asas kod, penyempitan dengan bendera — tiada fork.

  • Bendera EDITION=base menentukan MVP satu-klinik; keterlihatan menu (app.php) dan akses route (index.php) dibaca daripada allowlist Edition::allows().
  • Go RBAC ialah AUTORITI; Edition hanyalah penyempitan UI/permukaan — kebenaran sebenar dikuatkuasakan pada lapisan API (keterlihatan ≠ keselamatan).
  • dalam versi full semua modul terbuka; dalam versi base modul pertumbuhan Fasa 2/Fasa 3 disembunyikan. TIADA Fork — satu pangkalan kod, penyempitan dengan bendera.
  • Had kapasiti diukur dengan pelan/pakej berasaskan tenant (model langganan platform); apabila melebihi amaran-lembut (tidak menyekat).

Mekanisme Pemberian Versi

Versi boleh dijejaki pada lapisan skema, sumber, penggunaan dan API.

Pemversian Skema
migration bersiri goose (0001 → 0027); setiap perubahan bernombor + boleh dibatalkan (Up/Down). Versi yang digunakan dijejaki dalam jadual goose_db_version. Migration prod disahkan pada DB bersih.
Pemversian Sumber
Kawalan versi Git (branch: core); repo bare pusat terpencil. Setiap kerja bermakna di-commit; rahsia (connection.md, .tools) gitignore — kata laluan tidak sekali-kali di-commit.
Pemversian Penyebaran
Binary Go dikompil (-ldflags "-s -w"), HANYA swap bin/server.exe (tidak sekali-kali wrapper WinSW). Sandaran binary + web sebelum setiap deploy (bertimestamp). Cache-bust aset statik ?v=N.
Pemversian API
Hujung public awalan /v1; Export API /export/v1. Keserasian ke belakang dikekalkan; perubahan yang memecahkan adalah versi baharu.

Penggunaan Git, Rewind & Rollback

Seluruh proses pembangunan berada di bawah kawalan versi; setiap penggunaan boleh dibatalkan (rewind/rollback).

Kawalan Versi
Git (branch: core); repo bare pusat terpencil. Setiap kerja bermakna di-commit; sejarah boleh dijejaki.
Pengurusan Rahsia
Kata laluan/kunci/maklumat sambungan gitignore — TIDAK sekali-kali di-commit (connection.md, .tools, *.zip).
Pengasingan
Hanya direktori projek ini diversikan; sumber projek lain tidak disentuh.
Kebolehjejakan
Commit adalah berasaskan vertical-slice/ciri; log deploy (deploy_log) menyambungkan rantaian commit→release→prod.
Rewind / Rollback: Sebelum setiap pengedaran, sandaran binary + web + pangkalan data (dengan timestamp) diambil. Skema melalui migration boleh-undur (goose Down); binary yang berjalan dikembalikan ke versi sebelumnya (bin/server.exe.bak-*) dalam beberapa saat; web dipulihkan daripada arkib sebelumnya. Ketika berlaku insiden, pengeluaran boleh digulung semula ke keadaan lama-yang-baik.

Kriteria Keselamatan (Peraturan Emas)

Keselamatan bukanlah satu ciri, tetapi seni bina itu sendiri. Peraturan yang tidak boleh dirunding dan pelanggarannya bermakna penolakan PR:

Pengasingan peringkat baris (RLS FORCE, fail-closed)
Setiap jadual tenant_id; jika tiada konteks polisi mengembalikan 0 baris. Ujian pengasingan cross-tenant ialah pintu CI.
Atomik & idempotent yazma
Operasi berbilang entiti dalam satu transaction (samada semua atau tiada); setiap mutasi menghalang operasi berganda dengan Idempotency-Key.
Para = numeric
Float DILARANG; pembundaran di satu tempat, 2 digit. Ralat kewangan mustahil melalui reka bentuk.
Identiti & sesi
kata laluan argon2id; session_key opaque dalam Redis (TTL bergerak); pengesahan dua langkah (TOTP); session_key tidak didedahkan kepada pelayar.
Topoloji izolasyonu
Go hanya mendengar 127.0.0.1; satu-satunya permukaan public ialah PHP/BFF. Port backend (DB/Redis) tertutup ke luar.
Audit yang tidak boleh diubah
audit_log append-only; PII/rahsia tidak dilog/ditopeng; TCKN/data kesihatan bersifat sensitif khas.
Pertanyaan berparameter
Semua SQL berparameter (sqlc/pgx) — suntikan SQL mustahil; nama dataset whitelist.
Kedudukan data
Data kesihatan hanya di Turki; tiada pemindahan ke luar negara (KVKK Perkara 9, Peraturan KSV Perkara 16).

Development History (Sejarah Pembangunan)

Sistem dibina dengan kepingan menegak yang setiap satunya berfungsi dari hujung ke hujung. Di bawah tertera fasa dan kronologi kerja keselamatan/peraturan tempoh terkini.

Faz 0 Rangka

pgx+sqlc, goose, ujian RLS fail-closed, WithTenantTx, middleware sesi, login+RBAC, audit, loopback PHP↔Go, asas asynq, health.

Faz 1 Teras Klinik (9 vertical slice)

CRUD Pesakit + ujian pengasingan cross-tenant → Temu Janji (exclusion constraint + Redis lock) → Odontogram/Pelan rawatan (FDI, append-only) → Kutipan/Akaun Semasa/Kaunter Tunai (derive, idempotent) → adapter e-Fatura (fast-follow) → Stok → X-ray (S3) → Peringatan SMS (asynq backoff).

Platform Konsol pengurusan platform

Tier platform-operator (super-admin) (X-Platform-Key, satah identiti berasingan); pengurusan tenant, model langganan/pengebilan, pengukuran kapasiti, editor versi legal, reCAPTCHA, tetapan NetGSM.

Pertumbuhan Berbilang bahasa & laman web klinik

i18n (20 dil, key-based, RTL); 20 tema + klinik public site (/s/{slug}) + lead-booking; demo klinik siteleri.

2026-06 Keselamatan Identiti & Komunikasi

Primitif OTP dikongsi; set semula kata laluan + magic-link + pengaktifan akaun (SMTP sebenar); teras SMS NetGSM; auth public berbilang tenant; pengurusan pengguna klinik.

2026-06 Pengesahan dua faktor (2FA)

TOTP (RFC6238) + kod sandaran; QR WAJIB (bebas-luaran, qr.js bersih-CSP; disahkan secara bebas dengan OpenCV+ISO); pengesahan telefon SMS (persetujuan KVKK).

2026-06 Pematuhan Regulasi

VEM Görüntüsü (Model Data Minimum) 12 export view + Export API (ditakrifkan-SuperUser, terkunci-tenant, fail-closed); peta Perundangan & Pematuhan; semakan kontrak legal 100% berorientasikan perundangan.

2026-06 Sokongan & Proses

Pusat Sokongan berjejak tiket; dokumentasi proses SPICE (halaman ini); audit keselamatan berterusan + pengukuhan.

Lebih lanjut tentang kematangan proses dan pematuhan

Untuk maklumat terperinci tentang seni bina, keselamatan dan pematuhan peraturan, hubungi pasukan kami.

Regulation & Compliance Hubungi kami