#backend#adr#index
สารบัญ ADR ของ backend
ADR ทั้ง 11 ฉบับอยู่ที่ backend/docs/adr/ (ไฟล์ต้นฉบับภาษาอังกฤษ). ตารางนี้เทียบ สถานะตามเอกสาร กับ สถานะตามโค้ดจริง — ถ้าขัดกันให้ยึดโค้ด. กลับไปที่ภาพรวม: ภาพรวม Backend Go ของ SML Ai Account (Backend overview).
ทำงานอย่างไร (วิธีใช้)
- อ่านแถวของเรื่องที่สนใจ แล้วเปิดโน้ต ADR นั้นดูเหตุผล/ตัวเลือกที่ไม่เลือก.
- ตามลิงก์ไปโน้ต
be-*เพื่อดูพฤติกรรมปัจจุบันของโค้ด. - สังเกตคอลัมน์ "ตรงโค้ด?" ก่อนอ้าง ADR เป็นกฎ.
ตารางสรุป
| ADR | หัวข้อ | สถานะเอกสาร | ตรงโค้ด? |
|---|---|---|---|
| ADR-0001 เก็บ config ของผู้เช่า (Provider) เป็นไฟล์ JSON ไม่ใช่ตาราง DB | config ผู้เช่าเป็นไฟล์ JSON | accepted | ตรง (k8s ตั้ง 2 replica ขัดข้อสมมติ single instance) |
| ADR-0002 รหัสผ่าน DB ของผู้เช่าเก็บเป็น base64 ไม่ได้เข้ารหัส | รหัสผ่าน DB เป็น base64 ไม่เข้ารหัส | accepted | ตรง (ช่องโหว่ที่ยอมรับ) |
| ADR-0003 ข้อมูลผู้ใช้และสิทธิ์อยู่ใน DB ของแต่ละผู้เช่า ไม่ใช่ control-plane | identity ต่อผู้เช่า (sml_user_list) |
accepted | ตรง แต่โค้ดรองรับ bcrypt ด้วย |
| ADR-0004 การเพิกถอน session ตอน logout (RevocationStore) | เพิกถอน session ตอน logout | accepted | ล้าสมัยบางส่วน: ตอนนี้เก็บไฟล์ JSON ข้าม restart ได้ |
| ADR-0005 Query Gateway เริ่มแบบอ่านอย่างเดียว + สัญญา wire ใหม่ | query gateway อ่านก่อน | accepted | ตรง แต่ "exec ยังไม่เปิด" ล้าสมัย; alias count เป็น _query_count |
| ADR-0006 /query/exec รับเฉพาะ DML + ตารางระบบต้อง level>=9 (ถูกแทนด้วย ADR-0011) | exec DML-only + level | superseded | ถูกแทนด้วย 0011 |
| ADR-0007 binary เดียวรันเป็น Windows Service / macOS LaunchDaemon / container | binary เดียว Windows/macOS/container | accepted | ตรง |
| ADR-0008 /query/batch รัน SELECT หลายตัวในคำขอเดียว | /query/batch สูงสุด 20 |
accepted | ตรง (โค้ดห่อ read-only tx) |
| ADR-0009 /query/execBatch เขียนหลาย statement ใน transaction เดียว (atomic) | /query/execBatch atomic |
accepted | ตรง แต่เพดานจริง 1000 stmt / 2MB |
| ADR-0010 /blob/insert เก็บรูปเป็น bytea (ล้าสมัย: โค้ดใช้ MinIO แล้ว) | blob insert เก็บ bytea | accepted | ล้าสมัย: โค้ดใช้ MinIO |
| ADR-0011 ล็อก SQL เขียนจาก browser: ตารางเงิน/สต๊อก/GL ผ่าน /api/process เท่านั้น | ล็อกเขียนตารางเงินจาก browser | accepted | ตรง (ล่าสุด) |
ข้อสังเกตข้ามเรื่อง
- กลุ่ม Query Gateway: 0005 → 0006 → 0008 → 0009 → 0011 (ลำดับพัฒนาการ) สรุปรวมที่ Query Gateway: /query/list, limit, batch, exec, execBatch และ นโยบายล็อกการเขียนผ่าน Query Gateway (Query write policy / lockdown).
- กลุ่ม Tenant/Identity: 0001, 0002, 0003, 0004 สรุปรวมที่ โมเดลผู้เช่าหลายราย: Tenant, Provider, Main DB, Company (Multi-tenant model), ทะเบียน Provider แบบไฟล์ JSON (Provider registry), ขั้นตอน login / เลือกบริษัท / refresh / logout (Identity login flow), JWT session token และการเพิกถอน (JWT + revocation store).
- กลุ่ม Deployment: 0007 → วงจรชีวิตเซอร์วิสและการรัน binary เดียวหลาย OS (Service lifecycle), การ build และ deploy backend: Docker, Kubernetes, Makefile (Deployment).
- ADR ใหม่ทุกฉบับควรเพิ่มแถวในตารางนี้และระบุสถานะเทียบโค้ด.
ที่มาในโค้ด
backend/docs/adr/0001-provider-config-json-files-not-database.md:1— ADR ฉบับแรก (front-matterstatus).backend/docs/adr/0011-query-exec-write-lockdown.md:1— ฉบับล่าสุด (supersedes: 0006).- ไฟล์ ADR อื่นอยู่โฟลเดอร์เดียวกัน (
0002–0010), บรรทัด 1-3 คือสถานะ.
ดูเพิ่ม
ภาพรวม Backend Go ของ SML Ai Account (Backend overview) · สมอง SML — หน้าแรก (Map of Content) · สารบัญมาตรฐานและกฎเหล็กของ SML Ai Account (Standards Overview)