// 作品 / 詳情

hanken(半券)

以 LINE 為基礎架構的售票白牌 SaaS。售票是鉤子,觀眾 CRM 才是核心。

技術棧
elixirphoenixashliveviewlineoban
SCREENSHOT_001.png

一句話

讓活動方與場地方擁有自己的售票系統,透過觀眾 CRM 建立長期經營能力。

為什麼做這個

傳統售票平台抽票房、觀眾歸平台、每場活動歸零。hanken 反過來:純 SaaS 月費、觀眾歸活動方、資料隨時間複利。售票是獲客手段,CRM 是真正的產品。

商業模型

  • 純月費制,不抽成任何票房
  • 白牌模式:系統建在活動方自己的 LINE OA 上,觀眾關係留在他們手上
  • 活動方自行串接金流(綠界、LINE Pay),平台不碰金流

技術選擇

Elixir + Phoenix + Ash Framework。搶票是大量短時間並發請求,Erlang VM 的甜蜜點。Ash 處理售票的複雜狀態轉換:開賣、鎖定、付款、出票、退票、驗票。

座位鎖定FOR UPDATE SKIP LOCKED 悲觀鎖,在 Ash 不支援的地方直接走 raw Ecto — 這是刻意的設計選擇,不是技術債。

WaitingRoom 是 per-event GenServer,控制並行購買人數。Selection queue + Lock queue 兩階段,透過 process message 驅動 LiveView 狀態轉換。

架構重點

  • Schema-based multi-tenancy:每個組織一個 PostgreSQL schema
  • Workflow 模式:所有多步驟交易邏輯集中在 Workflows 模組,LiveView 不直接組合 Ash 操作
  • Side effect 分層:transaction 內的 after_action → commit 後的 Notifier → transaction 外的 Oban worker
  • UUIDv7 primary key,PostgreSQL 18 原生 uuidv7() 生成

AI 功能

  • Lookout 瞭望台:LLM agent 主動分析觀眾行為、產生行銷建議,附帶幻覺驗證、成本控制、推播抑制等四道安全護欄
  • Desk 服務台:Jido agent 驅動的互動式 Q&A,支援對話持久化與長對話摘要壓縮

LINE 生態整合

技術用途
LINE Login一人一帳號,提高黃牛成本
LIFF售票、票券、驗票都在 LINE 內開啟
Message API活動通知、CRM 自動化推播
LINE OA每個活動方的官方帳號,觀眾關係在自己手上