UDENTIVA Smart Dental Management Platform
KALIDAD NG SOFTWARE AT KAHANDAAN NG PROSESO

Ang Aming Proseso ng Pag-develop ng Software at Pagsunod sa SPICE

Inilalagay ng UDENTIVA sa mismong arkitektura ang kahandaan ng proseso na hinahanap para sa health software. Ipinapakita ng pahinang ito, kasama ang mga ebidensya, ang aming development lifecycle, mga capability level ng SPICE / ISO-IEC 15504, ang aming mga mekanismo ng patuloy na error logging at kontrol, ang aming pamantayan sa versioning at seguridad, at ang aming development history.

Batayan: Regulasyon Tungkol sa mga Sistema ng Pamamahala ng Impormasyong Pangkalusugan (Blg. ng Batas 39682) m.6 at m.20 — pangangailangan ng sertipikasyon sa kalidad ng software (CMMI/SPICE).

Ang arkitektura ng proseso ng UDENTIVA ay isang handa-sa-audit na pamamahala ng kalidad at proseso ng software na naaayon sa mga prinsipyo ng SPICE / ISO/IEC 15504.

Ang pagtukoy ng proseso, implementasyon at masusubaybayang mga produkto ng trabaho ay nakabalangkas; ang mga mekanismo ng dami-batay na pagsukat, pag-iwas sa depekto at tuluy-tuloy na pagpapabuti ay pinatatakbo sa produksiyon. Ang opisyal na deklarasyon ng antas ng kakayahan ay sakop ng malayang pagtatasa (appraisal).

SPICE Capability Levels

Sinusuri ng SPICE ang mga proseso sa capability level mula 0 hanggang 5. Ang UDENTIVA ay istrukturadong tumugon sa mga inaasahan ng Level 1-3 sa antas ng process definition/implementation/traceable na mga work product; para sa Level 4-5 ay pinapatakbo ang mga mekanismo ng quantitative measurement at continuous improvement. Ang opisyal na deklarasyon ng antas ay sasailalim sa independent assessment.

0
Eksik (Incomplete)
Hindi ipinapatupad ang proseso/hindi umaabot sa layunin.
1
Naisakatuparan (Performed)
Umiiral ang proseso at gumagawa ng mga output.
2
Pinamamahalaan (Managed)
Ang proseso ay pinaplano, sinusubaybayan; pinamamahalaan ang mga produkto ng trabaho.
3
Naitatag (Established)
Ang tinukoy na standard na proseso ay pare-parehong ipinapatupad sa buong proyekto.
4
Nahuhulaan (Predictable)
Ang proseso ay kinokontrol sa dami-batay (sa pamamagitan ng pagsukat).
5
Optimize Eden (Optimizing)
Tuluy-tuloy na pagpapabuti + pag-iwas sa depekto + inobasyon sa proseso.

Ang mga mekanismo ng quantitative control at continuous improvement ng Level 4-5 ay pinapatakbo sa ibaba kasama ang mga ebidensiya nito (live measurement, error/CAPA log, deployment records).

SPICE Process Areas → Implementasyon → Ebidensya

Ang bawat process area ay tumutugma sa isang konkretong implementasyon sa UDENTIVA at sa isang na-o-audit na ebidensiya. Ang proseso ay hindi isang dokumento, kundi umaandar na code.

Process AreaUDENTIVA ApplicationEbidensya
ENG.1 Pagkuha ng KinakailanganDepinisyon ng kinakailangan sa phase map + vertical slice; ni-lock ng kontrata ng proyekto na UDENTIVA.md ang mga kinakailangan.UDENTIVA.md (GINTONG PANUNTUNAN), 02_tech_spec/ teknikal na espesipikasyon, phase/module map
ENG.4 Disenyo ng SoftwareModular monolith; ang mga context package ay hindi nagbabahagi ng table ng isa't isa; komunikasyon sa pamamagitan ng interface; panlabas na serbisyo = adapter.panuntunan ng hangganan ng internal/{identity,patient,billing,export,...}; ADR-001..008
ENG.5 Konstruksiyon ng SoftwareTahasang SQL (sqlc, walang ORM); context ang unang parameter sa bawat function; error wrapping %w; pera = numeric.sqlc.yaml type override (numeric→string), db/queries/*.sql, gofmt/golangci-lint
ENG.6 Integrasyon ng SoftwareLoopback chain na PHP(BFF) ↔ Go ↔ PostgreSQL ↔ Redis; iisang pampublikong ibabaw.web/core/ApiClient, /healthz kalusugan ng component (db+redis)
ENG.7 Pagsubok ng SoftwareCross-tenant isolation test (pinakakritikal), idempotency, pagsalpok ng appointment, katumpakan ng pera, 2FA/OTP, TOTP RFC6238 vector, QR (OpenCV+ISO na pag-verify).internal/integration/*_test.go, platform/totp/totp_test.go, go test ./...
SUP.1 Katiyakan ng KalidadAng bawat PR ay dapat sumunod sa GINTONG PANUNTUNAN; malinis ang lint; kung pula ang isolation test sa CI, walang merge.golangci-lint, Definition of Done kontrol listesi
SUP.8 Pamamahala ng ConfigurationKontrol ng bersiyon ng Git (branch core); sunud-sunod na schema versioning ng goose; niba-backup ang mga build artifact.git, goose_db_version tablosu, .tools/deploy yedekleri
SUP.9 Paglutas ng ProblemaAppend-only na tala ng audit + e-mail/SMS outbox (tala ng bawat pagpapadala) + disiplina sa backup/rollback ng deploy.audit_log, email_outbox/sms_outbox, bin/server.exe.bak-* rollback
SUP.10 Pamamahala ng Kahilingan sa PagbabagoAng bawat pagbabago sa schema ay bagong numeradong migration; maibabalik (goose Down); pag-apruba ng classifier sa deploy.db/migrations/0001..0027, +goose Up/Down
MAN.3 Pamamahala ng ProyektoDeliberi na vertical-slice (gumagana ang bawat slice mula dulo-dulo); mga tala ng paglilipat ng sesyon.super-devam.md, faz tablosu (DoD per dilim)
MAN.6 PagsukatHealth check, pagsukat ng kapasidad, metrika ng pagpapadala ng e-mail/SMS, dami ng audit, live na telemetry ng event./healthz, panel ng Pagsubaybay sa Proseso at Kalidad (event/error/deploy/KPI)

Layered Architecture at Seguridad ng Datos

Ang mga responsibilidad ay hinahati sa mga layer; ang domain authority ay nasa iisang punto at nakahiwalay sa pamamagitan ng loopback. Nakikita lamang ng browser ang manipis na BFF, at hindi kailanman direktang naa-access ang domain at data layer.

LayerResponsibilidad at SeguridadLokasyon
Sunum (BFF)PHP 8.4 — manipis na BFF: sesyon, render, CSRF, ruta. WALANG panuntunan sa negosyo/DB. Iisang pampublikong ibabaw (IIS:443).web/
Uygulama / DomainGo modular monolith — ang NAG-IISANG awtoridad ng domain. RBAC, mga panuntunan sa negosyo, transaction. 127.0.0.1 lamang ang pinapakinggan.api/internal/
VeriPostgreSQL — bawat table ay may tenant_id + RLS FORCE; tahasang SQL (sqlc), may parameter. Numeric ang pera.api/db/
Cache / QueueRedis — sesyon, idempotency, distributed lock, asynq queue (SMS/e-fatura).platform/redisx
Nesne DepolamaS3-katugma — malalaking file (x-ray) presigned/stream; ang blob ay hindi kailanman nasa DB.platform/storage
Panlabas na Serbisyo (adapter)e-Fatura, SMS(NetGSM), e-mail(SMTP), (sa hinaharap ay e-Nabız/MEDULA/DICOM) — abstract sa likod ng interface.internal/notify

Quantitative Measurement at KPI — Live na Process Telemetry

Ang pagsukat ay hindi isang pahayag, kundi isang gumaganang sistema. Ang lahat ng transaksyon ay binibilang nang live (tagumpay/kabiguan), ang mga production error ay nahuhuli sa isang permanenteng log, at ang KPI framework sa ibaba ay iniuugnay sa mga periodic na aksyon. Ang mga data source ay tunay na table: event_counter (live na transaction counter), error_log (permanenteng error log), deploy_log (deployment log).

Measurement AreaKPILayuninData SourcePanahonAksyon
Seguridad ng pagkakahiwalay ng tenantcross-tenant test fail0CI / izolasyon testiher PRMerge block
Error sa produksiyontahasang error (5xx/panic)0error_log (permanente)tuluy-tuloy/liveRCA + CAPA zorunlu
Rate ng tagumpay ng transaksiyonsuccess / toplam event≥ %99event_counter (live)tuluy-tuloy/liveUgat na sanhi kapag bumaba
Oras ng resolusyonMTTR (avg. resolusyon)↓ bumababang trenderror_log (resolved)buwananTrend incelemesi
Pagiging maaasahan ng deploymentrate ng rollback< %5deploy_log30 arawRollback review
Seguridad ng pagkakakilanlan2FA/OTP kritik olay0audit + event_counterbuwananPagpapatatag
Pagiging maaasahan ng pagmemensaheSMS/e-posta failure↓ mababa*_outboxaraw-arawReview ng provider
Kahandaan sa pag-restoretagumpay ng restore test%100DR test (hedef)quarterlyI-update ang Runbook
Ang mga KPI na ito ay real-time na sinusubaybayan mula sa live na "Process Monitoring & Quality" na panel na naa-access ng platform operator: transaction success rate, bilang ng bukas na error, MTTR (average na oras ng resolusyon), bilang ng deployment at rollback rate.

Defect Prevention at Continuous Improvement Loop (RCA/CAPA)

Ang bawat production error ay dumadaan sa isang standard na root cause analysis (RCA) at corrective/preventive action (CAPA) loop; ang pag-ulit ng parehong error ay pinipigilan sa pamamagitan ng regression control at trend monitoring.

1
Tala ng insidente / error

Ang error sa produksiyon (5xx/panic) ay awtomatikong nahuhuli → permanenteng error_log (sa pag-ulit ng parehong signature, count++, defect trend).

2
Pag-uuri

Tinutukoy ang antas (error/panic), epekto at bilang ng pag-ulit; sinusukat ang lawak sa pamamagitan ng mga counter ng nabigong event.

3
Ugat na sanhi (RCA)

Ginagawa at itinatala ang pagsusuri ng ugat na sanhi sa panel ng Pagsubaybay sa Proseso.

4
Tama/pang-iwas na aksiyon (CAPA)

Tinutukoy at itinatala ang aksiyong pagwawasto + pang-iwas na aksiyon (code, test, panuntunan ng migration, kontrol ng seguridad).

5
Kontrol ng regresyon

Nagdaragdag ng test/panuntunan na pumipigil sa pag-ulit ng parehong error; sinusubaybayan sa tuluy-tuloy na telemetry.

6
Trend incelemesi

Ang mga trend ng KPI (MTTR, rate ng error, rollback) ay sinusuri nang pana-panahon; para sa paulit-ulit na error ay binubuksan ang aksiyon sa antas ng proseso.

Mga Pinapatakbong Mekanismo — Patuloy na Error Logging, Kontrol, at Improvement

Ang esensya ng SPICE Level 5: tuluy-tuloy na pag-log ng mga error, pagpapanatili nito sa ilalim ng kontrol, pag-iwas sa depekto at continuous improvement. Pinapatakbo ng UDENTIVA ang mga mekanismong ito sa produksyon.

Tuluy-tuloy na Pag-log ng Error

Ang hindi-mababagong (append-only) audit_log ay permanenteng nagtatala ng bawat kritikal na operasyon; ang email_outbox/sms_outbox ay ng bawat pagpapadala (status, attempts, error). Walang insidenteng tahimik na nawawala.

audit_log, *_outbox (status/error/attempts)
Kontrol ng Error at Rollback

Pare-parehong error envelope {error:{code,message}}; hindi kailanman naibubunyag ang panloob na error/stack. Bago ang bawat deploy ay may backup ng binary + web; sa oras ng outage ay rollback sa loob ng ilang segundo gamit ang bin/server.exe.bak-*.

httpx.Error, deploy yedek/rollback runbook
Pag-iwas sa Depekto (Defect Prevention)

Fail-closed na arkitektura: kung walang RLS context ay 0 row; pinipigil ng idempotency ang dobleng operasyon; ginagawang imposible ng numeric na pera ang error sa float; pinipigilan ng whitelist (export dataset) ang SQL injection. Ang mga error ay pinipigilan mula sa simula sa pamamagitan ng disenyo.

RLS FORCE, Idempotency-Key SETNX, numeric, view whitelist
Malayang Pag-verify

Ang mga kritikal na component ay bine-verify sa dalawang malayang paraan: TOTP RFC6238 test vector, para sa QR ang OpenCV cv2 decode + ISO/IEC 18004 reference codeword, cross-tenant isolation test.

integration test + panlabas na pag-verify ng decoder
Loop ng Tuluy-tuloy na Pagpapabuti

Sa bawat sesyon: audit ng seguridad → mga natuklasan → pagpapatatag (hal. idinagdag ang phase2/phase3 RBAC, 2FA, Export API). Pinapanatili ang institusyonal na memorya sa pamamagitan ng mga tala ng proseso (super-devam.md).

loop ng audit ng seguridad → pagpapatatag
Inobasyon sa Proseso

Ang bagong kahilingan sa regulasyon (VEM View) ay direktang isinasalin sa tampok ng produkto at ebidensiya; ang mga pagbabago sa batas ay tuluy-tuloy na sinusubaybayan at itinatala sa compliance map.

Export API/VEM views, /mevzuat compliance map

Kontrol ng Edition (Bersyon)

Iisang codebase, pagliit gamit ang flag — walang fork.

  • Ang bandila na EDITION=base ang tumutukoy sa single-clinic MVP; binabasa ng visibility ng menu (app.php) at access ng ruta (index.php) mula sa allowlist ng Edition::allows().
  • Go RBAC ang AWTORIDAD; ang Edition ay pagpapaliit lamang ng UI/ibabaw — ang tunay na awtorisasyon ay ipinapatupad sa layer ng API (visibility ≠ seguridad).
  • Sa full na bersiyon ay bukas ang lahat ng module; sa base na bersiyon ay nakatago ang mga growth module ng Phase 2/Phase 3. WALANG fork — iisang codebase, pinaliit sa pamamagitan ng bandila.
  • Ang mga limitasyon ng kapasidad ay sinusukat sa pamamagitan ng plan/package na batay sa tenant (subscription model ng platform); sa paglampas ay soft-warning (hindi humahadlang).

Mga Mekanismo ng Versioning

Nasubaybayang bersyon sa schema, source, deployment, at API layer.

Versioning ng Schema
Sunud-sunod na migration ng goose (0001 → 0027); ang bawat pagbabago ay numerado + maibabalik (Up/Down). Ang ipinatupad na bersiyon ay sinusubaybayan sa table na goose_db_version. Ang prod migration ay bine-verify sa malinis na DB.
Versioning ng Source
Kontrol ng bersiyon ng Git (branch: core); nakahiwalay na central bare repo. Ang bawat makabuluhang gawain ay ni-commit; ang mga sekreto (connection.md, .tools) ay gitignore — hindi kailanman ni-commit ang password.
Versioning ng Deployment
Kino-compile ang Go binary (-ldflags "-s -w"), swap LAMANG ng bin/server.exe (hindi kailanman ang WinSW wrapper). Bago ang bawat deploy ay may backup ng binary + web (may timestamp). Static asset cache-bust ?v=N.
Versioning ng API
Ang mga pampublikong endpoint ay may prefix na /v1; Export API /export/v1. Pinapanatili ang backward compatibility; ang pagbabagong sumisira ay bagong bersiyon.

Paggamit ng Git, Rewind at Rollback

Ang buong proseso ng development ay nasa version control; ang bawat deployment ay maibabalik (rewind/rollback).

Kontrol ng Bersiyon
Git (branch: core); nakahiwalay na central bare repo. Ang bawat makabuluhang gawain ay ni-commit; masusubaybayan ang kasaysayan.
Pamamahala ng Sekreto
Password/key/impormasyon ng koneksiyon ay gitignore — HINDI kailanman ni-commit (connection.md, .tools, *.zip).
Pagkakahiwalay
Ang direktoryo lamang ng proyektong ito ang bine-bersiyon; hindi ginagalaw ang source ng ibang mga proyekto.
Pagkasubaybay
Ang mga commit ay batay sa vertical-slice/tampok; iniuugnay ng deploy log (deploy_log) ang chain na commit→release→prod.
Rewind / Rollback: Bago ang bawat deployment ay kinukuha ang backup ng binary + web + database (may timestamp). Ang schema ay sa pamamagitan ng reversible migration (goose Down); ang umaandar na binary ay ibinabalik sa nakaraang bersyon (bin/server.exe.bak-*) sa loob ng ilang segundo; ang web ay ibinabalik mula sa nakaraang archive. Sa oras ng insidente ay maaaring i-rewind ang produksyon sa dating-mabuting kalagayan.

Pamantayan sa Seguridad (Ginintuang Tuntunin)

Ang seguridad ay hindi isang feature, kundi ang arkitektura mismo. Ang mga tuntuning hindi napag-uusapan, na ang paglabag ay pagtanggi sa PR:

Pagkakahiwalay sa antas ng row (RLS FORCE, fail-closed)
Bawat table ay may tenant_id; kung walang context ang policy ay nagbabalik ng 0 row. Ang cross-tenant isolation test ay pintuan ng CI.
Atomik & idempotent yazma
Multi-entity na operasyon sa iisang transaction (o lahat o wala); pinipigil ng bawat mutation gamit ang Idempotency-Key ang dobleng operasyon.
Para = numeric
BAWAL ang Float; ang rounding ay sa iisang lugar, 2 desimal. Ang error sa pananalapi ay imposible sa pamamagitan ng disenyo.
Identity at session
argon2id na password; opaque na session_key sa Redis (kumakalat na TTL); dalawang-hakbang na pag-verify (TOTP); hindi naibubunyag ang session_key sa browser.
Topoloji izolasyonu
Go lamang ang nakikinig sa 127.0.0.1; ang iisang pampublikong ibabaw ay PHP/BFF. Ang mga backend port (DB/Redis) ay sarado sa labas.
Hindi-mababagong audit
Append-only audit_log; ang PII/secret ay hindi nilo-log/minamaskara; ang TCKN/datos ng kalusugan ay may espesyal na katangian.
Parameterized query
Lahat ng SQL ay may parameter (sqlc/pgx) — imposible ang SQL injection; ang mga pangalan ng dataset ay whitelist.
Lokasyon ng datos
Ang datos ng kalusugan ay nasa Turkey lamang; walang paglilipat sa ibang bansa (KVKK m.9, KSV Yön. m.16).

Development History (Kasaysayan ng Pag-develop)

Ang sistema ay itinayo gamit ang mga vertical slice na bawat isa ay gumagana mula dulo hanggang dulo. Sa ibaba ay makikita ang mga yugto at ang kronolohiya ng mga kamakailang gawain sa seguridad/regulasyon.

Faz 0 Balangkas

pgx+sqlc, goose, RLS fail-closed test, WithTenantTx, session middleware, login+RBAC, audit, PHP↔Go loopback, base ng asynq, health.

Faz 1 Klinikal na Core (9 vertical slice)

Patient CRUD + cross-tenant isolation test → Appointment (exclusion constraint + Redis lock) → Odontogram/Treatment plan (FDI, append-only) → Koleksiyon/Kuwenta/Kaha (derive, idempotent) → e-Fatura adapter (fast-follow) → Stock → X-ray (S3) → Paalala sa SMS (asynq backoff).

Platform Console ng pamamahala ng platform

Tier ng platform-operator (super-admin) (X-Platform-Key, hiwalay na plano ng pagkakakilanlan); pamamahala ng tenant, modelo ng subscription/billing, pagsukat ng kapasidad, editor ng legal na bersiyon, reCAPTCHA, mga setting ng NetGSM.

Paglago Multi-lengguwahe at website ng klinika

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

2026-06 Seguridad ng Pagkakakilanlan at Komunikasyon

Ibinahaging OTP primitive; pag-reset ng password + magic-link + aktibasyon ng account (tunay na SMTP); NetGSM SMS core; multi-tenant na public auth; pamamahala ng gumagamit ng klinika.

2026-06 Two-factor authentication (2FA)

TOTP (RFC6238) + backup code; SAPILITANG QR (panlabas-na-malaya, malinis-sa-CSP na qr.js; malayang na-verify gamit ang OpenCV+ISO); pag-verify ng telepono sa SMS (KVKK na pahintulot).

2026-06 Pagsunod sa Regulasyon

VEM View (Minimum Data Model) 12 export view + Export API (tinukoy ng SuperUser, naka-lock sa tenant, fail-closed); Batas at Compliance map; %100 tungo-sa-batas na rebisyon ng legal na kontrata.

2026-06 Suporta at Proseso

Support Center na may ticket tracking; SPICE na dokumentasyon ng proseso (ang page na ito); tuluy-tuloy na audit ng seguridad + pagpapatatag.

Higit pa tungkol sa kahandaan ng proseso at pagsunod

Para sa detalyadong impormasyon tungkol sa arkitektura, seguridad, at pagsunod sa regulasyon, makipag-ugnayan sa aming team.

Regulation & Compliance Makipag-ugnayan