Skip to content

v0.16.0

Choose a tag to compare

@Shudesu Shudesu released this 07 Jul 07:05
bbe1af3

v0.16.0 — アフィリエイト計測(ASP)/ Affiliate Tracking

🇯🇵 日本語

✨ 新機能: アフィリエイト計測(ASP)

「クリック → 友だち追加 → フォーム/予約 → 決済」を時系列で追跡し、last-touch(90日窓)で成果を帰属するセルフサーブ型アフィリエイト機能を搭載しました。

  • セルフサーブリンク発行 — アフィリエイターは LIFF(?page=affiliate)からワンタップで登録・リンク発行。6文字乱数 slug、媒体別ラベル、上限20本。管理画面からも友だち検索で作成可能(コードはサーバ側乱数、友だちと1:1バインド)
  • 案件(オファー) — 1成約あたり固定額報酬の案件を定義。アフィリエイターは案件単位で参加し、案件専用リンクを取得。案件に設定したタグ/シナリオは流入時に自動適用(停止した案件はフロー停止、計測は継続)
  • last-touch 帰属 — CV 発生時に直近90日の最終アフィリタッチをスナップショット保存(自己クリック除外)。全タッチ履歴は時系列で保存され、後から検証可能
  • 成果承認フロー — 帰属 CV は「審査中」で発生 → 管理画面で承認/却下。確定報酬 = 承認済み件数 × 固定額。identity key による重複(水増し)フラグ付き
  • 成果 push 通知 — 紹介経由の新規友だち追加・成果承認をアフィリエイター本人に LINE で通知(二重送信は DB レベルで防止)
  • ジャーニー API — 友だち単位・アフィリエイター単位の時系列イベント(タッチ/友だち追加/フォーム/CV)
  • 短縮ドメイン対応LINK_BASE_URL 設定 + Redirect Rule で https://your-domain/xxxxxx 形式の配布リンク
  • 管理画面は /affiliates 1ページ3タブ(アフィリエイター/案件/成果承認)に統合

ガイド: docs/wiki/27-Affiliate-ASP.md

✨ 新機能: iOS 代理予約

  • 管理者による代理予約 + 空き枠 API(iOS アプリ連携用)

🚀 改善: チャット / 受信箱

  • チャット一覧を約8倍高速化(本番実測 3,473ms → 435ms)+ カーソルページング
  • 未対応バッジ改善 — 「解決済」で即減少(新着で自動復帰)、返信直後に即時更新、画像/スタンプ受信でも未読化
  • MCP list_conversations にも同じ判定を適用(管理画面との乖離解消)

🔧 修正

  • 予約リマインドを重いジョブより先に実行(cron 飢餓による送り漏れ防止)
  • /o 共有 URL のリンクプレビュー(OGP)対応
  • update バナー: 自前 CI/CD ビルドでは非表示、文言改善、手動更新ガイド(26-Manual-Update.md)新設
  • /updates ページの Failed to fetch 解消

🗄 データベース

  • migration 046 / 047(いずれも追加専用、047 は既存帰属 CV の backfill 含む)

🇬🇧 English

✨ New: Affiliate tracking (ASP)

Self-serve affiliate tracking with a full funnel timeline (click → friend add → form/booking → payment) and last-touch attribution over a 90-day window.

  • Self-serve links — affiliates register and issue links from LIFF (?page=affiliate): 6-char random slugs, per-channel labels, up to 20 links. Admins can also create affiliates from the dashboard (server-generated random codes, 1:1 friend binding).
  • Offers — define campaigns with a fixed reward per conversion. Affiliates enroll per offer and receive offer-specific links; offer tags/scenarios are applied automatically on inflow (paused offers stop the flow while measurement continues).
  • Last-touch attribution — the latest affiliate touch within 90 days is snapshotted at conversion time (self-clicks excluded). The full touch history remains queryable for audits.
  • Approval flow — attributed conversions start as pending; approve/reject from the dashboard. Confirmed reward = approved count × fixed amount, with identity-key duplicate flags for fraud review.
  • Push notifications — affiliates get a LINE push on new referred friend adds and on approval (double-send prevented at the DB level).
  • Journey APIs — chronological events (touch / friend add / form / conversion) per friend and per affiliate, with cursor pagination.
  • Short link domainLINK_BASE_URL setting + a redirect rule on your domain yields https://your-domain/xxxxxx links.
  • Admin UI consolidated into a single /affiliates page with three tabs (affiliates / offers / approvals).

Guide: docs/wiki/27-Affiliate-ASP.md

✨ New: iOS proxy booking

  • Admin proxy booking and availability routes for the iOS app flow.

🚀 Improved: Chat & inbox

  • ~8x faster chat list (production: 3,473ms → 435ms) with cursor pagination.
  • Unanswered badge — resolved conversations drop off immediately (auto-revive on new inbound), instant refresh after replies, non-text inbound now marks chats unread.
  • The MCP list_conversations tool now applies the same resolved exclusion.

🔧 Fixed

  • Booking reminders run before heavy scheduled jobs (prevents cron-starvation misses).
  • OGP link previews for /o share URLs.
  • Update banner: hidden for self-hosted CI/CD builds, softer wording, new manual update guide (26-Manual-Update.md).
  • /updates page no longer shows "Failed to fetch" on unconfigured environments.

🗄 Database

  • Migrations 046 / 047 (both additive; 047 backfills pending status for existing attributed conversions).

What's Changed

  • fix: show admin build fingerprint by @aiagentmini-bit in #157
  • fix(ci): build update-engine before worker in deploy workflow by @Shudesu in #164
  • fix(liff): open-redirect guard on /auth/line ?redirect= by @Shudesu in #163
  • feat(ci): bake admin CORS vars into deploy config (survive redeploys) by @Shudesu in #165
  • docs: add OSS sandbox merge gate by @Shudesu in #175
  • fix(worker): register existing friends on first webhook contact by @Shudesu in #174
  • fix(worker): accept SDK rich menu imageData uploads by @Shudesu in #176
  • fix(mcp): compare account summary with LINE followers by @Shudesu in #178
  • chore(create): publish CLI build with nodejs compat deploy fix by @Shudesu in #180
  • fix: honor next_step_on_false jump target + scope comma cleanup to flex by @9kumiko3oka5-jpg in #191
  • sync: private → oss (chat inbox fix + chat list perf + reminder ordering) by @Shudesu in #193
  • chore: remove internal planning docs by @Shudesu in #194
  • sync: update バナー改善 (文言/リンク/dev非表示) + /o OGP 対応 by @Shudesu in #195
  • sync: 未構成環境でのアップデート履歴ページ graceful 化 by @Shudesu in #196
  • sync: ASP アフィリエイト計測機能 by @Shudesu in #197
  • sync: サイドバーにアフィリエイト導線 by @Shudesu in #198
  • sync: admin からのアフィリエイター作成 by @Shudesu in #199
  • sync: ASP 案件 + 成果承認フロー by @Shudesu in #200
  • sync: アフィリ管理3タブ統合 + LIFF 案件中心UI by @Shudesu in #201
  • sync: アフィリ成果通知 + MCP resolved 除外 by @Shudesu in #202
  • sync: v0.16.0 リリース by @Shudesu in #203

New Contributors

Full Changelog: v0.15.0...v0.16.0