Skip to content

v0.19.0 — LINE AI customer-service n8n port + GW line-level provenance

Choose a tag to compare

@MorrisLu-Taipei MorrisLu-Taipei released this 26 May 08:01
· 26 commits to main since this release

v0.19.0 — LINE AI customer-service n8n port + Google Workspace line-level provenance

🆕 New example: examples/line-ai-customer-service/

Port of the backend of scorpioliu0953/ai_customer_service (Netlify + React + Supabase + GPT/Gemini) to n8n, with the admin frontend implemented as approach C (n8n-hosted UI).

Backend runtime (1:1 with upstream line-webhook.ts, 175 lines)

  • core/core-message-router — dedup / handover-keyword → human / human-mode timeout / GPT (chat · o-series · gpt-5 Responses) or Gemini / reply
  • entry-line — webhook + raw-body HMAC-SHA256 signature verify + event fan-out

Frontend admin (approach C — runs entirely in n8n, no external host)

  • admin/admin-ui — Respond-to-Webhook serves a single-file HTML dashboard
  • admin/api-settings · api-users · api-kb — CRUD over the same Supabase tables
  • dashboard HTML generated by admin/_build_admin.mjs (avoids hand JSON-escaping)
  • X-Admin-Token auth via n8n env LINECS_ADMIN_TOKEN

Design

  • Only one n8n credential (Supabase). LINE / OpenAI / Gemini keys are read from the settings row — same as upstream, so the dashboard can edit them.
  • Docs: SDD.md (portability verdict — backend portable, React dashboard not), FRONTEND-SDD.md (approach C), docs/{install,supabase-setup,line-setup,admin-setup,field-mapping}.
  • Gotchas documented: LINE signature needs raw body, self-hosted needs NODE_FUNCTION_ALLOW_BUILTIN=crypto, reply-token ~1 min TTL, no native LINE/Gemini nodes.

📎 Google Workspace example — line-level provenance

  • New examples/google-workspace-admin-workflow/PROVENANCE.md — maps every preserved data item to the exact upstream src/Code.gs line, pinned to commit fce2513 (11 subfolders / 9 Doc headings / T001–T010 / 10 checklist rows / 5 reminder offsets / 14 date types / sheet headers).
  • Inline <- Code.gs:Lxxx markers in the Prepare nodes + a source pointer in each core overview sticky note.

✅ Validation

Both examples pass _audit.mjs static lint (0 errors / 0 warnings) and local n8n REST import (Google Workspace 7/7, LINE 6/6 accepted by n8n).


🤖 Generated with Claude Code