v0.16.0
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形式の配布リンク - 管理画面は
/affiliates1ページ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 domain —
LINK_BASE_URLsetting + a redirect rule on your domain yieldshttps://your-domain/xxxxxxlinks. - Admin UI consolidated into a single
/affiliatespage 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_conversationstool now applies the same resolved exclusion.
🔧 Fixed
- Booking reminders run before heavy scheduled jobs (prevents cron-starvation misses).
- OGP link previews for
/oshare URLs. - Update banner: hidden for self-hosted CI/CD builds, softer wording, new manual update guide (26-Manual-Update.md).
/updatespage 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
- @9kumiko3oka5-jpg made their first contribution in #191
Full Changelog: v0.15.0...v0.16.0