สมอง SML

คลังความรู้ / การตัดสินใจ (ADR)

#backend#adr#index

สารบัญ ADR ของ backend

ADR ทั้ง 11 ฉบับอยู่ที่ backend/docs/adr/ (ไฟล์ต้นฉบับภาษาอังกฤษ). ตารางนี้เทียบ สถานะตามเอกสาร กับ สถานะตามโค้ดจริง — ถ้าขัดกันให้ยึดโค้ด. กลับไปที่ภาพรวม: ภาพรวม Backend Go ของ SML Ai Account (Backend overview).

ทำงานอย่างไร (วิธีใช้)

  1. อ่านแถวของเรื่องที่สนใจ แล้วเปิดโน้ต ADR นั้นดูเหตุผล/ตัวเลือกที่ไม่เลือก.
  2. ตามลิงก์ไปโน้ต be-* เพื่อดูพฤติกรรมปัจจุบันของโค้ด.
  3. สังเกตคอลัมน์ "ตรงโค้ด?" ก่อนอ้าง 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 ตรง (ล่าสุด)

ข้อสังเกตข้ามเรื่อง

ที่มาในโค้ด

  • backend/docs/adr/0001-provider-config-json-files-not-database.md:1 — ADR ฉบับแรก (front-matter status).
  • 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)