v0.4.0 — Per-Campaign Intro & Reward Templates
✨ New Features
キャンペーン作成画面に「流入時メッセージ」セレクター追加
Step 3 LINE 連携 で、message_templates から intro テンプレを選択できるようになりました。友だち追加直後にユーザーへ届く push メッセージをキャンペーン毎にカスタマイズ可能です。
- テンプレ内ボタン URL に `{formUrl}` を入れると送信時に実 LIFF フォーム URL に自動置換
- セレクター未指定時は従来のデフォルト Flex(後方互換)
tracked_link 経由でキャンペーン単位の管理
キャンペーン作成時に line-harness の `POST /api/tracked-links` を呼び出し、`introTemplateId` と `rewardTemplateId` を持つ tracked_link を生成。返却された id を `ref` として campaign URL に埋め込みます。
これにより:
- ✅ 既存の「X Harness 受け取りフォーム」を N キャンペーンで再利用 可能
- ✅ それぞれのキャンペーンに 異なる流入メッセージ + 異なる特典メッセージ を設定可能
- ✅ tracked_link API 失敗時はランダム ref フォールバックでキャンペーン作成を継続
- ✅ LINE 接続切替時に stale な template ID を即座にクリア(race condition 防止)
制約と運用ルール
- 同じフォームを使い回しつつキャンペーン毎に違う reward を送るのは NG(既存友だちは最初のキャンペーンの reward に永遠ロックされる、セキュリティ上の意図的な制約)
- reward を変えたいキャンペーンは 必ず別フォームを作る こと
- 詳細は `docs/LINE-HARNESS-INTEGRATION.md` 参照
⚠️ Breaking / 互換性
このリリースは line-harness >= v0.10.0 を要求 します。古い line-harness では:
- `POST /api/tracked-links` が `introTemplateId` / `rewardTemplateId` を silent ignore
- form push URL に `gate` / `xh` が伝搬しない(フォームが古い gate に verify する)
- reward テンプレが発火しない
OSS ユーザーは line-harness を 必ず先に v0.10.0 以上 にアップグレードしてください。
🔗 Companion Release
- line-harness v0.10.0 — DB マイグレ + REST API + SDK + MCP 全対応