feat(note): mock e-Court login form on dev page
All checks were successful
Deploy eCourt Note Web to Server / Validate Database Schema (Drizzle) (push) Successful in 4s
Deploy eCourt Note Web to Server / Build Web Docker Image (push) Successful in 1m16s
Deploy eCourt Note Web to Server / Deploy eCourt Note Web to Server (push) Successful in 4s
Deploy eCourt Note Web to Server / Notify Deployment Status (push) Successful in 1s
All checks were successful
Deploy eCourt Note Web to Server / Validate Database Schema (Drizzle) (push) Successful in 4s
Deploy eCourt Note Web to Server / Build Web Docker Image (push) Successful in 1m16s
Deploy eCourt Note Web to Server / Deploy eCourt Note Web to Server (push) Successful in 4s
Deploy eCourt Note Web to Server / Notify Deployment Status (push) Successful in 1s
เพิ่มฟอร์ม "จำลอง e-Court — ขอ token ด้วย API key" บนหน้า /note/dev (components/MockEcourtForm): ใส่ DOCVER_API_KEY + userid/username + เลือกไฟล์ตัวอย่าง → ยิง POST /api/note/auth/token (ทางเข้าเดียวกับที่ e-Court ใช้จริง) แล้ว redirect เข้า /note?fileUrl=…&t=… ให้ NoteHome แลกเป็น session 8 ชม. ต่อ — ใช้ได้ทั้ง dev และ production และไม่เป็นประตูหลัง (ต้องถือ API key ที่ถูกต้อง) พร้อมกันนี้เปลี่ยนเกณฑ์เปิดหน้า dev เป็น env ตัวเดียว (คำขอผู้ใช้ 2026-11-02): - devMintEnabled: ตัดเงื่อนไข NODE_ENV≠production ออก เหลือ NOTE_SSO_DEV_MINT === "1" อย่างเดียว — ตั้งไว้บน production (เครื่องทดสอบ) ก็ใช้ได้ - หน้า /note/dev: 0/ไม่ตั้ง = 404 ทั้งหน้า (notFound) — เดิมเป็น public ตลอดเหลือแต่ข้อความแนะนำ - dev-link (GET/POST) เปิด/ปิดตามเกณฑ์เดียวกันโดยอัตโนมัติ - sync CLAUDE.md + ปรับ unit test ให้ตรงเกณฑ์ใหม่ Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
parent
83a2cc3e5e
commit
f7e84e3ee7
6 changed files with 160 additions and 23 deletions
|
|
@ -1,7 +1,9 @@
|
|||
import Link from "next/link";
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
import AppNav from "@/components/AppNav";
|
||||
import DevLoginLinkForm from "@/components/DevLoginLinkForm";
|
||||
import MockEcourtForm from "@/components/MockEcourtForm";
|
||||
import { devMintEnabled } from "@/lib/note-auth";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
|
@ -9,11 +11,10 @@ export const dynamic = "force-dynamic";
|
|||
/**
|
||||
* /note/dev — เครื่องมือทดสอบ (ย้ายมาจากหน้าแรก 2026-10-30 ตอน /note เปลี่ยนเป็น
|
||||
* landing เรียบ): เปิดเอกสารตัวอย่าง (D14) + คู่มือทางเข้า SSO 2 แบบ + ตัวช่วย mint
|
||||
* ลิงก์ทดสอบ · **public** (ต้อง mint ลิงก์ได้ตอนยังไม่มี session ไม่งั้นตายก่อนเริ่ม
|
||||
* — ฉบับ token 2026-10-30: ไม่มี middleware แล้ว ทุกหน้าเป็น shell public ส่วน
|
||||
* session ตรวจฝั่ง client ผ่าน localStorage) · ตัวอย่างลิงก์เป็น "รูปแบบ + ขั้นตอน"
|
||||
* เท่านั้น ไม่ mint จริงจากหน้า (secret ต้องอยู่ฝั่ง server) · ไม่ query DB
|
||||
* · แบนเนอร์ ?sso= และ bootstrap ของ N8 ?fileUrl= อยู่ที่หน้าแรก /note
|
||||
* ลิงก์ทดสอบ · **เปิดด้วย env NOTE_SSO_DEV_MINT=1 อย่างเดียว — 0/ไม่ตั้ง = 404
|
||||
* ทั้งหน้า** (คำขอผู้ใช้ 2026-11-02, ใช้ได้ทุก environment รวม production ที่ตั้ง env
|
||||
* ไว้) · ตัวอย่างลิงก์เป็น "รูปแบบ + ขั้นตอน" เท่านั้น ไม่มี secret ในหน้า
|
||||
* · ไม่ query DB · แบนเนอร์ ?sso= และ bootstrap ของ N8 ?fileUrl= อยู่ที่หน้าแรก /note
|
||||
*/
|
||||
|
||||
/** รายการเอกสาร fixed ในโค้ด (D14) — จาก PDF ตัวอย่างที่มีอยู่จริงของแอป
|
||||
|
|
@ -52,6 +53,9 @@ export default async function DevToolsPage({
|
|||
}: {
|
||||
searchParams: Record<string, string | string[] | undefined>;
|
||||
}) {
|
||||
// ทางเข้าหน้านี้คุมด้วย env ตัวเดียวกับ dev-link (2026-11-02) — ปิด = 404
|
||||
// เหมือนไม่มีหน้านี้ ไม่เหลือแค่ข้อความแนะนำ
|
||||
if (!devMintEnabled()) notFound();
|
||||
// โหมด credential ของลิงก์ตัวอย่าง — jwt (default) | ticket สลับผ่าน ?sampleMode=
|
||||
const sampleMode = searchParams.sampleMode === "ticket" ? "ticket" : "jwt";
|
||||
const mintOn = devMintEnabled();
|
||||
|
|
@ -98,9 +102,10 @@ export default async function DevToolsPage({
|
|||
</div>
|
||||
) : (
|
||||
<p className="mt-3 rounded-lg border border-line bg-canvas p-3 text-xs leading-relaxed text-ink-soft">
|
||||
ตอนนี้ลิงก์ด้านล่างเปิดเอกสารแบบธรรมดา (ไม่ได้จำลองการเข้าระบบ) —
|
||||
เพิ่ม <Code>NOTE_SSO_DEV_MINT=1</Code> ในไฟล์ <Code>.env</Code> แล้วรีสตาร์ท
|
||||
dev server จะกดแล้วผ่านขั้นตอนเข้าระบบเหมือนของจริงทุกอย่าง
|
||||
ลิงก์ด้านล่างเปิดเอกสารด้วย session ที่มีอยู่เท่านั้น — ยังไม่มี session
|
||||
ใช้ฟอร์ม "จำลอง e-Court" ด้านล่างแทน · dev server ที่ต้องการ mint
|
||||
ให้อัตโนมัติ (ไม่ต้องใส่ key) เพิ่ม <Code>NOTE_SSO_DEV_MINT=1</Code>{" "}
|
||||
แล้วรีสตาร์ท
|
||||
</p>
|
||||
)}
|
||||
<div className="mt-5 max-w-xl rounded-xl border border-line bg-white p-6">
|
||||
|
|
@ -127,6 +132,23 @@ export default async function DevToolsPage({
|
|||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* จำลอง e-Court ด้วย API key — แสดงทุก environment (คำขอผู้ใช้ 2026-11-02:
|
||||
ใช้ทางเข้าจริงเหมือน e-Court ต้องถือ DOCVER_API_KEY จึงไม่เป็นประตูหลัง) */}
|
||||
<div className="mt-5 max-w-xl rounded-xl border border-line bg-white p-6">
|
||||
<h3 className="font-display text-subhead text-primary">
|
||||
จำลอง e-Court — ขอ token ด้วย API key
|
||||
</h3>
|
||||
<p className="mt-1.5 text-sm text-ink-soft">
|
||||
ใส่ API key (<Code>DOCVER_API_KEY</Code>) เพื่อขอ token ผ่าน{" "}
|
||||
<Code>POST /api/note/auth/token</Code> แบบเดียวกับที่ e-Court ทำจริง
|
||||
แล้วระบบจะพาเข้าอ่านเอกสารที่เลือกเลย — ได้ session 8 ชม.
|
||||
(ใช้ได้ทั้ง dev และ production)
|
||||
</p>
|
||||
<div className="mt-4">
|
||||
<MockEcourtForm files={Object.values(SAMPLE_DOCS).flat()} />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* ── Flow ─────────────────────────────────────────────────────────── */}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue