ข้ามไปที่เนื้อหา

S9 — สิ่งที่ต่างจากระบบเดิม (Changes vs Current)

เทียบอะไรกับอะไร

ปัจจุบัน = schema PORTAL @ PSDBPRDDB (.149) — 48 ตาราง (Phase 1, ใช้งานจริง) → เป้าหมาย = ขยายต่อ (+23 ตาราง / แก้ 1) · ต่างจาก S8 ตรงที่ S9 เป็น extension ไม่ใช่ redesign → ตารางเดิมส่วนใหญ่ ใช้ต่อไม่แก้ · ดู: schema.sql · Data Dictionary · Implementation

ภาพรวม

  • เพิ่ม 23 ตารางใหม่, แก้ 1 ตาราง (ALTER), ตารางเดิม ~30 ตาราง reuse ไม่แก้
  • S9 กลายเป็น single authorization authority ของทุกระบบ (รวม S8) → sync ไป Keycloak client roles
  • ThaiD: open item → พร้อมใช้ (ยืนยันแล้ว ไม่ใช่ความเสี่ยงค้าง)

🆕 เพิ่มใหม่ (23 ตาราง)

กลุ่ม ตาราง ทำไม อ้างอิง
Membership UserSubsystemMembership ความสัมพันธ์ ผู้ใช้(ThaiD)↔ระบบย่อย (cross-system check) REQ-WPT-002
Card UI SubsystemCard การ์ดระบบย่อยตามสมาชิก + breadcrumb REQ-WPT-003
Auth/SSO AuthProvider, UserIdentity, SsoSession, SsoDownstreamGrant multi-identity + alt credential + dynamic downstream SSO REQ-WPT-006
Login security SecurityPolicy, PasswordHistory, LoginAttempt, UserSecurityStatus lockout/aging/inactive/no-reuse + config back-office REQ-WPT-007
Authz routing SubsystemOwner, PermissionApproval, Notification อนุมัติคำขอราย subsystem + แจ้งเตือนใน portal REQ-WPT-005
Integration EndpointRegistry, ServiceCenterRequest, ServiceCenterRouting, PublishedQuery OpenAPI registry + Service Center routing + Query Builder REQ-WPT-001 (CR-1/3/6)
Dashboard AuditLog, UsageStatDaily audit trail + สถิติรายวันสำหรับกราฟ REQ-WPT-008
Survey Survey, SurveyQuestion, SurveyResponse, SurveyAnswer แบบประเมินความพึงพอใจ (รวมของ S8 มาด้วย) REQ-WPT-009

✏️ เปลี่ยน / ปรับ

เดิม ใหม่ ความต่าง อ้างอิง
PermissionRequest + คอลัมน์ AdOnlyAccess ช่อง "ขอสิทธิ์ AD เท่านั้น" (O-8) REQ-WPT-005
UserRole (grant อยู่ใน DB อย่างเดียว) UserRole + sync Keycloak client roles ทุกระบบ enforce จาก JWT; portal เป็น authority กลาง D8 / REQ-WPT-005
ThaiD = ประเด็นเปิด ThaiD พร้อมใช้ สถานะ ไม่ใช่ schema — ปลด open item SSO status

🔁 ใช้ต่อ (reuse — ไม่แก้, ~30 ตาราง)

UserProfile (Pid=ThaiD, Id=Keycloak UUID), RLPDSystems, ModuleRoles, UserRole, Groups/SubGroups, PermissionRequest + lookups, RequestedPermissions, PermissionRequest{History,Files,RunningNumber}, PetitionRequests + PetitionRequestDepartments/Files/History, PetitionChannel, ApiKey, ApiTokens (Query Builder เดิม), OpenApiExecuteLog, EmailSentLog, SystemAccessLog, EmailNotificationSettings, PasswordResetToken, TaskStatusMapping, master/geo lookups

❌ เอาออก

  • ไม่มี — เป็น extension ล้วน ไม่ลบตารางเดิม

ผลกระทบข้ามระบบ (เพราะ authz รวมศูนย์)

  • ทุกระบบย่อย (รวม S8) ต้องเป็น row ใน RLPDSystems + ลงทะเบียน role ที่ ModuleRoles (seed)
  • การมอบสิทธิ์ทำที่ portal → sync Keycloak client roles → ทุกระบบอ่านจาก JWT (ดู Implementation REQ-WPT-005)

หมายเหตุการ rollout

  • เป็น ALTER + create ตารางใหม่ (ไม่ใช่ migration ใหญ่) — AdOnlyAccess มี DEFAULT ปลอดภัย
  • Seed: AuthProvider, SecurityPolicy (ค่า O-7), SubsystemCard, SubsystemOwner
  • ตรวจ collation ของ string FK ให้ตรงกับ PSDBPRDDB