ติดตั้งแอปผู้เช่า (LINE LIFF)
deploy apps/tenant และ Edge Functions ของ LINE แล้วตั้ง TENANT_APP_URL ให้หลังบ้าน
แอปผู้เช่า (apps/tenant) เป็นเว็บที่ LINE เปิดผ่าน LIFF หนึ่งแอปใช้ได้ทุกหอ แยกหอด้วย path /t/<slug> · แอปเดียวกันมีหน้าห้องว่าง /r/<slug> ที่ไม่ต้องล็อกอิน (ลิงก์ใน ตั้งค่า → หน้าห้องว่าง ก็ใช้ TENANT_APP_URL เช่นกัน)
- Deploy
apps/tenant(Vercel: โปรเจกต์แยกจากหลังบ้าน, Root Directoryapps/tenant) ใช้ env เดียวกับหลังบ้าน:NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY(ไม่ต้องมี key ลับ) ต้องเป็น https - ตั้ง
TENANT_APP_URL=https://<โดเมนแอปผู้เช่า>ให้แอปหลังบ้าน (apps/admin) แล้ว redeploy หลังบ้าน (env ใหม่มีผลกับ deployment ใหม่เท่านั้น) — หน้า ตั้งค่า → LINE OA ใช้สร้าง LIFF Endpoint URL (https://<โดเมนแอปผู้เช่า>/t/<slug>) ให้เจ้าของหอคัดลอก pnpm functions:deploy(มีline-login,line-webhook,line-check,line-send— ตัวสุดท้ายส่งข้อความแจ้งเตือน หลังบ้านเรียกหลังออกใบแจ้งหนี้/เปลี่ยนสถานะงานซ่อม)- Supabase Dashboard → Authentication → Rate Limits: Token verifications ต่อ IP ควรรองรับผู้เช่าหลายคนใน Wi-Fi เดียวกันที่เปิดแอปครั้งแรกพร้อมกัน (เช่น 150 ต่อ 5 นาที) — หลังเข้าครั้งแรก session อยู่ในเครื่องผู้เช่า ไม่ต้องยืนยันซ้ำ
การส่งแจ้งเตือนตามเวลา
หัวข้อที่มีชื่อว่า “การส่งแจ้งเตือนตามเวลา”แจ้งเตือนผู้เช่าทาง LINE แบบเตือนก่อน/หลังครบกำหนดและสัญญาใกล้สิ้นสุด ใช้ pg_cron (09:00 น. ทุกวัน) และ pg_net (ส่งคิวทุก 10 นาที) ซึ่ง migration 0040 เปิดให้เอง
pnpm db:push— นอกจาก apply migration แล้วยังเก็บ URL ของ project ลง Vault (project_url) ให้ pg_net เรียกline-sendได้ (รันซ้ำได้ไม่มีผลเสีย)pnpm functions:deploy line-send- เปิด ตั้งค่า → แจ้งเตือนผู้เช่า ถ้าไม่มีกล่อง “การเตือนตามเวลายังไม่พร้อม” แสดงว่าครบแล้ว ถ้ายังมี: Supabase Dashboard → Database → Extensions ตรวจว่า pg_cron และ pg_net เปิดอยู่ แล้ว
pnpm db:pushอีกครั้ง
ตรวจงานที่ตั้งไว้: select jobname, schedule from cron.job where jobname like 'am-line-%'; (ควรมี am-line-reminders และ am-line-send) · ผลการเรียก: select status_code, created from net._http_response order by created desc limit 10;
ข้อความแบบส่งทันที (ใบแจ้งหนี้ออก รับเงิน งานซ่อม) ไม่ต้องพึ่ง pg_cron: หลังบ้านเรียก line-send หลังพนักงานทำรายการ
| ผู้เช่าเห็น | สาเหตุ / วิธีแก้ |
|---|---|
| “บริการผู้เช่า — เปิดหน้านี้จากเมนูใน LINE OA ของหอพัก” | LINE เปิดโดเมนเปล่าที่ไม่มี /t/<slug> — แก้ Endpoint URL ในแท็บ LIFF ให้ตรงกับหน้าตั้งค่า และลิงก์ในริชเมนู/แชตต้องเป็น https://liff.line.me/<LIFF ID> ไม่ใช่โดเมนแอปผู้เช่า |
| หอพักนี้ยังไม่เปิดให้ใช้งานผ่าน LINE | ยังไม่ได้ติ๊กเปิดใช้งานในตั้งค่า หรือ slug ใน URL ไม่ตรงกับหอ |
ผู้เช่าแต่ละคนเป็นผู้ใช้ใน Supabase Auth (อีเมลแทน <LINE userId>@<org id>.line.invalid ไม่มีการส่งอีเมล) แต่ไม่ได้เป็นสมาชิกขององค์กร จึงอ่านตารางใดๆ ไม่ได้ อ่านได้เฉพาะผ่าน RPC tenant_* — รายละเอียดใน docs/adr/0002-tenant-auth-line.md