UDENTIVA Nền tảng Quản lý Nha khoa Thông minh
CHẤT LƯỢNG PHẦN MỀM & SỰ TRƯỞNG THÀNH QUY TRÌNH

Quy trình Phát triển Phần mềm của chúng tôi & Tuân thủ SPICE

UDENTIVA nhúng chính sự trưởng thành quy trình được yêu cầu đối với phần mềm y tế vào bản thân kiến trúc. Trang này trình bày cùng với bằng chứng: vòng đời phát triển của chúng tôi, các cấp năng lực SPICE / ISO-IEC 15504, các cơ chế ghi nhật ký lỗi và kiểm soát liên tục, các tiêu chí phiên bản và bảo mật, cùng lịch sử phát triển.

Căn cứ: Quy định về Hệ thống Quản lý Thông tin Y tế (Số Văn bản 39682) điều 6 và điều 20 — yêu cầu chứng nhận chất lượng phần mềm (CMMI/SPICE).

Kiến trúc quy trình của UDENTIVA là một phương pháp quản lý chất lượng và quy trình phần mềm sẵn sàng cho kiểm toán, tuân theo các nguyên tắc SPICE / ISO-IEC 15504.

Định nghĩa quy trình, việc thực thi và các sản phẩm công việc có thể truy vết đã được cấu trúc hóa; các cơ chế đo lường định lượng, phòng ngừa lỗi và cải tiến liên tục đang được vận hành trong sản xuất. Việc công bố mức năng lực chính thức phải thuộc phạm vi đánh giá độc lập (appraisal).

Cấp độ Năng lực SPICE

SPICE đánh giá các quy trình theo mức năng lực từ 0 đến 5. UDENTIVA được cấu trúc để đáp ứng kỳ vọng của Mức 1-3 ở tầng định nghĩa quy trình/thực thi/sản phẩm công việc có thể truy vết; đối với Mức 4-5, các cơ chế đo lường định lượng và cải tiến liên tục đang được vận hành. Việc công bố mức chính thức phụ thuộc vào đánh giá độc lập.

0
Eksik (Incomplete)
Quy trình không được áp dụng/không đạt được mục tiêu.
1
Được thực hiện (Performed)
Quy trình tồn tại và tạo ra các đầu ra của nó.
2
Được quản lý (Managed)
Quy trình được lập kế hoạch, giám sát; các sản phẩm công việc được quản lý.
3
Được thiết lập (Established)
Quy trình chuẩn đã định nghĩa được áp dụng nhất quán trên toàn dự án.
4
Có thể dự đoán (Predictable)
Quy trình được kiểm soát định lượng (bằng đo lường).
5
Optimize Eden (Optimizing)
Cải tiến liên tục + phòng ngừa lỗi + đổi mới quy trình.

Các cơ chế kiểm soát định lượng và cải tiến liên tục thuộc Mức 4-5 được vận hành cùng bằng chứng đi kèm (đo lường trực tiếp, sổ ghi lỗi/CAPA, nhật ký triển khai).

Vùng Quy trình SPICE → Áp dụng → Bằng chứng

Mỗi lĩnh vực quy trình tương ứng với một triển khai cụ thể trong UDENTIVA và một bằng chứng có thể kiểm toán. Quy trình không phải là một tài liệu, mà là mã đang chạy.

Vùng Quy trìnhỨng dụng UDENTIVABằng chứng
ENG.1 Thu thập yêu cầuĐịnh nghĩa yêu cầu theo bản đồ giai đoạn + vertical slice; UDENTIVA.md khóa các yêu cầu của hợp đồng dự án.UDENTIVA.md (QUY TẮC VÀNG), đặc tả kỹ thuật 02_tech_spec/, bản đồ giai đoạn/mô-đun
ENG.4 Thiết kế phần mềmMonolith mô-đun hóa; các gói ngữ cảnh (context) không chia sẻ bảng của nhau; giao tiếp qua interface; dịch vụ bên ngoài = adapter.quy tắc biên internal/{identity,patient,billing,export,...}; ADR-001..008
ENG.5 Xây dựng phần mềmSQL tường minh (sqlc, không ORM); context là tham số đầu tiên trong mọi hàm; bọc lỗi %w; tiền = numeric.ghi đè kiểu trong sqlc.yaml (numeric→string), db/queries/*.sql, gofmt/golangci-lint
ENG.6 Tích hợp phần mềmChuỗi loopback PHP(BFF) ↔ Go ↔ PostgreSQL ↔ Redis; bề mặt public duy nhất.web/core/ApiClient, tình trạng thành phần /healthz (db+redis)
ENG.7 Kiểm thử phần mềmKiểm thử cô lập cross-tenant (quan trọng nhất), idempotency, xung đột lịch hẹn, độ chính xác tiền tệ, 2FA/OTP, vector TOTP RFC6238, QR (xác minh OpenCV+ISO).internal/integration/*_test.go, platform/totp/totp_test.go, go test ./...
SUP.1 Đảm bảo chất lượngMỗi PR bắt buộc phải tuân theo QUY TẮC VÀNG; lint sạch; nếu kiểm thử cô lập bị đỏ trên CI thì không merge.golangci-lint, Definition of Done kontrol listesi
SUP.8 Quản lý cấu hìnhKiểm soát phiên bản Git (branch core); phiên bản hóa lược đồ tuần tự bằng goose; các artefact build được sao lưu.git, goose_db_version tablosu, .tools/deploy yedekleri
SUP.9 Giải quyết vấn đềBản ghi kiểm toán chỉ bổ sung (append-only) + outbox e-mail/SMS (mỗi lần gửi được ghi lại) + kỷ luật sao lưu/rollback triển khai.audit_log, email_outbox/sms_outbox, bin/server.exe.bak-* rollback
SUP.10 Quản lý yêu cầu thay đổiMỗi thay đổi lược đồ là một migration đánh số mới; có thể hoàn tác (goose Down); phê duyệt của classifier khi triển khai.db/migrations/0001..0027, +goose Up/Down
MAN.3 Quản lý dự ánBàn giao theo vertical slice (mỗi lát cắt chạy đầu-cuối); ghi chú bàn giao phiên làm việc.super-devam.md, faz tablosu (DoD per dilim)
MAN.6 Đo lườngKiểm tra tình trạng, đo lường công suất, số liệu gửi e-mail/SMS, khối lượng audit, telemetry sự kiện trực tiếp./healthz, bảng điều khiển Giám sát quy trình & Chất lượng (sự kiện/lỗi/triển khai/KPI)

Kiến trúc Phân tầng & Bảo mật Dữ liệu

Trách nhiệm được phân tách theo tầng; quyền lực domain nằm ở một điểm duy nhất và được cô lập bằng loopback. Trình duyệt chỉ nhìn thấy BFF mỏng, không bao giờ truy cập trực tiếp được vào tầng domain và tầng dữ liệu.

TầngTrách nhiệm & Bảo mậtVị trí
Sunum (BFF)PHP 8.4 — BFF mỏng: phiên, render, CSRF, định tuyến. KHÔNG có quy tắc nghiệp vụ/DB. Bề mặt public duy nhất (IIS:443).web/
Uygulama / DomainMonolith mô-đun hóa bằng Go — thẩm quyền DUY NHẤT của domain. RBAC, quy tắc nghiệp vụ, transaction. Chỉ lắng nghe 127.0.0.1.api/internal/
VeriPostgreSQL — mỗi bảng có tenant_id + RLS FORCE; SQL tường minh (sqlc), có tham số. Tiền là numeric.api/db/
Bộ nhớ đệm / Hàng đợiRedis — phiên, idempotency, khóa phân tán, hàng đợi asynq (SMS/e-fatura).platform/redisx
Nesne DepolamaTương thích S3 — tệp lớn (X-quang) presigned/stream; blob không bao giờ nằm trong DB.platform/storage
Dịch vụ bên ngoài (adapter)e-Fatura, SMS(NetGSM), e-mail(SMTP), (sau này e-Nabız/MEDULA/DICOM) — trừu tượng hóa phía sau interface.internal/notify

Đo lường Định lượng & KPI — Telemetry Quy trình Trực tiếp

Đo lường không phải là một tuyên bố, mà là một hệ thống đang chạy. Mọi thao tác được đếm trực tiếp (thành công/thất bại), các lỗi phát sinh được ghi vào sổ lưu vĩnh viễn, và khung KPI dưới đây được gắn với các hành động định kỳ. Các nguồn dữ liệu là bảng thật: event_counter (bộ đếm thao tác trực tiếp), error_log (sổ lưu lỗi vĩnh viễn), deploy_log (sổ lưu triển khai).

Vùng Đo lườngKPIMục tiêuNguồn Dữ liệuKỳHành động
Bảo mật cô lập tenantcross-tenant test fail0CI / izolasyon testiher PRChặn merge
Lỗi sản xuấtlỗi hiển thị (5xx/panic)0error_log (lâu dài)liên tục/trực tiếpRCA + CAPA zorunlu
Tỷ lệ giao dịch thành côngsuccess / toplam event≥ 99%event_counter (trực tiếp)liên tục/trực tiếpNguyên nhân gốc khi sụt giảm
Thời gian giải quyếtMTTR (thời gian giải quyết trung bình)↓ xu hướng giảmerror_log (resolved)hàng thángTrend incelemesi
Độ tin cậy triển khaitỷ lệ rollback< %5deploy_log30 ngàyRollback review
Bảo mật danh tính2FA/OTP kritik olay0audit + event_counterhàng thángGia cố (hardening)
Độ tin cậy nhắn tinSMS/e-posta failure↓ thấp*_outboxtheo ngàyreview nhà cung cấp
Sẵn sàng khôi phụctỷ lệ thành công của kiểm thử restore%100DR test (hedef)hàng quýCập nhật Runbook
Các KPI này được theo dõi thời gian thực từ bảng điều khiển "Giám sát Quy trình & Chất lượng" trực tiếp mà nhà vận hành nền tảng truy cập: tỷ lệ thành công của giao dịch, số lỗi đang mở, MTTR (thời gian khắc phục trung bình), số lần triển khai và tỷ lệ rollback.

Chu trình Phòng ngừa Lỗi & Cải tiến Liên tục (RCA/CAPA)

Mỗi lỗi phát sinh đều đi qua một chu trình phân tích nguyên nhân gốc (RCA) và hành động khắc phục/phòng ngừa (CAPA) tiêu chuẩn; việc lặp lại cùng một lỗi được ngăn chặn bằng kiểm soát hồi quy và theo dõi xu hướng.

1
Bản ghi sự cố / lỗi

Lỗi sản xuất (5xx/panic) được tự động bắt giữ → error_log lâu dài (khi cùng một chữ ký lặp lại thì count++, xu hướng lỗi).

2
Phân loại

Xác định mức độ (error/panic), tác động và số lần lặp lại; đo lường mức độ phổ biến bằng các bộ đếm sự kiện thất bại.

3
Nguyên nhân gốc (RCA)

Phân tích nguyên nhân gốc được thực hiện và ghi lại trên bảng điều khiển Giám sát quy trình.

4
Hành động khắc phục/phòng ngừa (CAPA)

Hành động khắc phục + hành động phòng ngừa (mã, kiểm thử, quy tắc migration, kiểm soát bảo mật) được xác định và ghi lại.

5
Kiểm soát hồi quy

Thêm kiểm thử/quy tắc ngăn chặn cùng một lỗi tái diễn; được giám sát bằng telemetry liên tục.

6
Trend incelemesi

Xu hướng KPI (MTTR, tỷ lệ lỗi, rollback) được đánh giá định kỳ; đối với lỗi tái diễn, một hành động cấp quy trình được mở ra.

Các cơ chế được vận hành — Ghi Nhật ký Lỗi, Kiểm soát & Cải tiến Liên tục

Cốt lõi của SPICE Mức 5: liên tục ghi log lỗi, giữ chúng trong tầm kiểm soát, phòng ngừa khuyết tật và cải tiến liên tục. UDENTIVA vận hành các cơ chế này trong môi trường sản xuất.

Ghi log lỗi liên tục

audit_log không thể thay đổi (append-only) ghi lại mọi thao tác quan trọng; email_outbox/sms_outbox ghi lại lâu dài mọi lần gửi (status, attempts, error). Không có sự kiện nào bị mất một cách âm thầm.

audit_log, *_outbox (status/error/attempts)
Kiểm soát lỗi & Hoàn tác

Phong bì lỗi nhất quán {error:{code,message}}; lỗi nội bộ/stack không bao giờ bị rò rỉ. Sao lưu binary + web trước mỗi lần triển khai; khi có outage, rollback trong vài giây bằng bin/server.exe.bak-*.

httpx.Error, deploy yedek/rollback runbook
Phòng ngừa lỗi (Defect Prevention)

Kiến trúc fail-closed: không có ngữ cảnh RLS thì 0 dòng; idempotency ngăn thao tác trùng lặp; tiền numeric khiến lỗi float là bất khả thi; whitelist (export dataset) ngăn chặn SQL injection. Lỗi được ngăn chặn ngay từ đầu bằng thiết kế.

RLS FORCE, Idempotency-Key SETNX, numeric, view whitelist
Xác minh độc lập

Các thành phần quan trọng được xác minh bằng hai phương pháp độc lập: vector kiểm thử TOTP RFC6238, giải mã OpenCV cv2 + codeword tham chiếu ISO/IEC 18004 cho QR, kiểm thử cô lập cross-tenant.

kiểm thử tích hợp + xác minh bằng bộ giải mã bên ngoài
Vòng lặp cải tiến liên tục

Ở mỗi phiên làm việc, kiểm toán bảo mật → phát hiện → gia cố (ví dụ đã thêm RBAC faz2/faz3, 2FA, Export API). Bộ nhớ tổ chức được bảo tồn qua ghi chú quy trình (super-devam.md).

vòng lặp kiểm toán bảo mật → gia cố
Đổi mới quy trình

Yêu cầu quy định mới (VEM Görüntüsü) được chuyển trực tiếp thành tính năng sản phẩm và bằng chứng; các thay đổi pháp lý được giám sát liên tục và được ghi vào bản đồ tuân thủ.

Export API/VEM views, bản đồ tuân thủ /mevzuat

Kiểm soát Edition (Phiên bản)

Một mã nguồn duy nhất, thu hẹp bằng cờ (flag) — không fork.

  • Cờ EDITION=base xác định MVP một-phòng-khám; khả năng hiển thị menu (app.php) và quyền truy cập route (index.php) đọc từ allowlist Edition::allows().
  • Go RBAC LÀ THẨM QUYỀN; Edition chỉ là thu hẹp UI/bề mặt — quyền thực sự được thực thi ở tầng API (khả năng hiển thị ≠ bảo mật).
  • Ở phiên bản full, tất cả mô-đun đều mở; ở phiên bản base, các mô-đun tăng trưởng Giai đoạn 2/Giai đoạn 3 bị ẩn. KHÔNG fork — một mã nền duy nhất, thu hẹp bằng cờ.
  • Giới hạn công suất được đo bằng gói/kế hoạch theo tenant (mô hình đăng ký nền tảng); khi vượt quá sẽ có cảnh báo mềm (không chặn).

Các cơ chế Phiên bản hóa

Phiên bản có thể truy vết ở tầng lược đồ, mã nguồn, triển khai và API.

Phiên bản hóa lược đồ
Migration tuần tự bằng goose (0001 → 0027); mỗi thay đổi được đánh số + có thể hoàn tác (Up/Down). Phiên bản đã áp dụng được theo dõi trong bảng goose_db_version. Migration prod được xác minh trên DB sạch.
Phiên bản hóa mã nguồn
Kiểm soát phiên bản Git (branch: core); central bare repo cô lập. Mỗi công việc có ý nghĩa đều được commit; các bí mật (connection.md, .tools) được gitignore — mật khẩu không bao giờ được commit.
Phiên bản hóa triển khai
Binary Go được biên dịch (-ldflags "-s -w"), CHỈ swap bin/server.exe (không bao giờ là WinSW wrapper). Sao lưu binary + web trước mỗi lần triển khai (có timestamp). Cache-bust asset tĩnh ?v=N.
Phiên bản hóa API
Các endpoint public có tiền tố /v1; Export API dùng /export/v1. Khả năng tương thích ngược được bảo toàn; thay đổi phá vỡ là phiên bản mới.

Sử dụng Git, Rewind & Rollback

Toàn bộ quy trình phát triển nằm trong kiểm soát phiên bản; mỗi lần triển khai đều có thể hoàn tác (rewind/rollback).

Kiểm soát phiên bản
Git (branch: core); central bare repo cô lập. Mỗi công việc có ý nghĩa đều được commit; lịch sử có thể truy vết.
Quản lý bí mật
Mật khẩu/khóa/thông tin kết nối được gitignore — KHÔNG BAO GIỜ được commit (connection.md, .tools, *.zip).
Cô lập
Chỉ thư mục dự án này được đưa vào kiểm soát phiên bản; không đụng đến mã nguồn của các dự án khác.
Khả năng truy vết
Các commit dựa trên vertical-slice/tính năng; sổ nhật ký triển khai (deploy_log) liên kết chuỗi commit→release→prod.
Rewind / Rollback: Trước mỗi lần triển khai, bản binary + web + cơ sở dữ liệu đều được sao lưu (kèm timestamp). Lược đồ có thể hoàn tác bằng migration khả nghịch (goose Down); binary đang chạy được quay về phiên bản trước (bin/server.exe.bak-*) trong vài giây; web được khôi phục từ bản lưu trước. Khi có sự cố, môi trường sản xuất có thể được quay về trạng thái cũ-tốt.

Tiêu chí Bảo mật (Quy tắc Vàng)

Bảo mật không phải là một tính năng, mà là chính kiến trúc. Những quy tắc mà vi phạm sẽ khiến PR bị từ chối, không thương lượng:

Cô lập ở cấp độ dòng (RLS FORCE, fail-closed)
Mỗi bảng có tenant_id; nếu không có ngữ cảnh, policy trả về 0 dòng. Kiểm thử cô lập cross-tenant là cổng CI.
Atomik & idempotent yazma
Thao tác đa thực thể trong một transaction (hoặc tất cả hoặc không có gì); mỗi mutation dùng Idempotency-Key để ngăn thao tác trùng lặp.
Para = numeric
CẤM Float; làm tròn ở một nơi duy nhất, 2 chữ số. Lỗi tài chính là bất khả thi nhờ thiết kế.
Định danh & phiên
Mật khẩu argon2id; session_key opaque trong Redis (TTL trượt); xác thực hai bước (TOTP); session_key không được lộ ra trình duyệt.
Topoloji izolasyonu
Go chỉ lắng nghe 127.0.0.1; bề mặt public duy nhất là PHP/BFF. Các cổng backend (DB/Redis) đóng với bên ngoài.
Kiểm toán không thể thay đổi
audit_log chỉ bổ sung (append-only); PII/secret không được ghi log/được che giấu; TCKN/dữ liệu sức khỏe thuộc loại đặc biệt.
Truy vấn có tham số
Tất cả SQL đều có tham số (sqlc/pgx) — SQL injection là bất khả thi; tên dataset được whitelist.
Vị trí lưu trữ dữ liệu
Dữ liệu sức khỏe chỉ nằm ở Thổ Nhĩ Kỳ; không có chuyển giao ra nước ngoài (KVKK m.9, KSV Yön. m.16).

Development History (Lịch sử Phát triển)

Hệ thống được xây dựng bằng các lát cắt dọc, mỗi lát chạy từ đầu đến cuối. Bên dưới là các giai đoạn (phase) và trình tự thời gian của các công tác bảo mật/quy định gần đây.

Faz 0 Bộ khung

pgx+sqlc, goose, kiểm thử RLS fail-closed, WithTenantTx, middleware phiên, đăng nhập+RBAC, audit, loopback PHP↔Go, nền tảng asynq, health.

Faz 1 Lõi phòng khám (9 vertical slice)

CRUD bệnh nhân + kiểm thử cô lập cross-tenant → Lịch hẹn (exclusion constraint + Redis lock) → Odontogram/Kế hoạch điều trị (FDI, append-only) → Thu tiền/Công nợ/Két → e-Fatura adapter (fast-follow) → Kho → X-quang (S3) → Nhắc nhở SMS (asynq backoff).

Platform Bảng điều khiển quản trị nền tảng

Tier vận hành nền tảng (siêu quản trị) (X-Platform-Key, mặt phẳng danh tính riêng); quản lý tenant, mô hình đăng ký/lập hóa đơn, đo lường công suất, trình chỉnh sửa phiên bản pháp lý, reCAPTCHA, cài đặt NetGSM.

Tăng trưởng Đa ngôn ngữ & trang web phòng khám

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

2026-06 Bảo mật danh tính & liên lạc

Primitive OTP dùng chung; đặt lại mật khẩu + magic-link + kích hoạt tài khoản (SMTP thật); SMS lõi NetGSM; xác thực public đa tenant; quản lý người dùng phòng khám.

2026-06 Xác thực hai bước (2FA)

TOTP (RFC6238) + mã dự phòng; QR BẮT BUỘC (độc lập bên ngoài, qr.js sạch CSP; được xác minh độc lập bằng OpenCV+ISO); xác minh số điện thoại qua SMS (đồng ý KVKK).

2026-06 Tuân thủ quy định

VEM Görüntüsü (Mô hình dữ liệu tối thiểu) 12 export view + Export API (do SuperUser định nghĩa, khóa theo tenant, fail-closed); bản đồ Pháp lý & Tuân thủ; sửa đổi hợp đồng pháp lý hướng đến 100% tuân thủ quy định.

2026-06 Hỗ trợ & Quy trình

Trung tâm hỗ trợ có theo dõi ticket; tài liệu quy trình SPICE (trang này); kiểm toán bảo mật liên tục + gia cố.

Thêm về sự trưởng thành quy trình và tuân thủ

Để biết thông tin chi tiết về kiến trúc, bảo mật và tuân thủ quy định, hãy liên hệ với đội ngũ của chúng tôi.

Regulation & Compliance Liên hệ