コンテンツにスキップ

ドメインモデル

実装観点

本ページのエンティティは 概念 として読む。Claude Code ランタイムモデル では、これらは DB レコードではなく Backlog 課題・テーマリポのファイル・LINE API の状態 に分散する。状態の在処は Claude Code ランタイム / 状態の在処 を参照。

中核エンティティ

classDiagram
    class Project {
        +id
        +name
        +backlog_project_key
        +github_template_repo
    }
    class ChannelAccount {
        +id
        +channel: enum(LINE,TikTok,IG,HubSpot)
        +external_account_id
        +credentials_ref
    }
    class ContentTask {
        +id
        +backlog_issue_key
        +channel
        +status
        +scheduled_at
        +target_tags
    }
    class Template {
        +id
        +path_in_github
        +version
    }
    class Rule {
        +id
        +path_in_github
        +version
    }
    class Audience {
        +id
        +external_user_id
        +tags
    }
    class Tag {
        +id
        +name
        +project_id
    }
    class Trigger {
        +id
        +kind: enum(manual,schedule,event)
        +payload
    }
    class Asset {
        +id
        +kind: enum(image,video,carousel)
        +uri
    }
    class Coupon {
        +id
        +line_coupon_id
        +rule_ref
    }
    class LoyaltyCard {
        +id
        +line_card_id
        +goals
    }
    class Survey
    class SurveyResponse
    class DeliveryRun {
        +id
        +content_task_id
        +started_at
        +finished_at
        +result
    }

    Project "1" --> "*" ChannelAccount
    Project "1" --> "*" ContentTask
    Project "1" --> "*" Tag
    ContentTask "1" --> "1" Trigger
    ContentTask "*" --> "*" Template
    ContentTask "*" --> "*" Asset
    ContentTask "*" --> "*" Tag : target_tags
    ContentTask "1" --> "*" DeliveryRun
    Audience "*" --> "*" Tag
    Survey "1" --> "*" SurveyResponse
    SurveyResponse "*" --> "*" Tag : derives

概念の説明

Project

spin-dd 運用代行の HubSpot 顧客サイト と 1:1 で対応する。「馬頭ゴルフ」「おかだ」「ラテール」など 運用前提 の台帳に対応。Backlog プロジェクトは TTRTAGSPIN 共用 + ウォッチ対象設定 で識別(詳細は Backlog 連携)。

ChannelAccount

Project × チャネルの組。1 プロジェクトが LINE と Instagram を持つなら、ChannelAccount は 2 つできる。各種トークンはここから参照。

ContentTask

Backlog 課題と 1:1 で対応する配信単位。Backlog の status が状態の SoT で、未対応 → 処理中 → automedia承認 (承認=配信対象) → automedia実行済み (成功) / automediaエラー (失敗) を遷移する。詳細は Backlog 連携 / マッピング規約コンテンツワークフロー

Template / Rule

HubSpot 管理 GitHub リポジトリにある メッセージ雛形配信ルール。automedia 側はキャッシュしつつ、SoT は GitHub。

  • Template: 文面・レイアウト(Flex Message / カルーセル / 動画つき など)
  • Rule: いつ・誰に配るかの条件式(例: 「タグ=スイーツ閲覧者 かつ 直近30日以内に未配信」)

Audience / Tag

  • Audience: 友だち / フォロワーの抽象。チャネルごとの外部 ID を持つ
  • Tag: 配信対象を絞るためのラベル。プロジェクトごとに名前空間を持つ
  • Tag の供給源: アンケート回答 / クリック履歴 / 手動付与 / 外部システム同期

Trigger

ContentTask の起動条件。

  • schedule: 日時起動
  • manual: 指示(Backlog コメントコマンド、UI ボタン、API 呼び出し)
  • event: 友だち追加 / 特定アンケート回答 / 外部 Webhook

Asset

画像 / 動画 / カルーセル素材。チャネル横断で再利用される(特に動画は LINE/TikTok/Instagram で同じものを使う)。

Coupon / LoyaltyCard / Survey

LINE 公式アカウント機能を抽象化したもの。一旦 LINE 専用だが、将来他チャネルでも使えるよう「チャネル拘束しない概念名」にしておく。

DeliveryRun

ContentTask 1 件に対する 実際の配信実行記録。リトライがあれば複数件。