LINEtool 機能概要(バックエンド/フロント全体の整理) [目的] - LINE公式アカウント向けの友だち管理、個別送信・一斉送信、テンプレ送信、タグ・シナリオ配信、リッチメニュー管理、Webhook連携、簡易ジョブ実行を提供する。 [構成] - 言語/ランタイム: PHP(JSONファイルを疑似DBとして使用) - コア: app/config, app/lib(Utils/JsonStore/LineClient/FriendsManager/Repo*) - データ: app/data/*.json - API: app/api/* - UI: app/public(assets, index.php)+ app/templates - ジョブ: app/jobs(daemon, runner) [設定・基盤] - app/config/config.php - タイムゾーン, エラー設定, 各種ディレクトリ定義, ライブラリ読み込み - STORAGE_BACKEND=json(将来差し替え想定) - app/config/line_config.php - LINE_CHANNEL_ACCESS_TOKEN, LINE_CHANNEL_SECRET の定義 - app/lib/Utils.php - sendJson, readJsonInput, getParam, e(HTMLエスケープ) - app/lib/JsonStore.php - JSONファイルのロック付き読み込み/アトミック書き込み - app/lib/LineClient.php - フォロワー取得, プロフィール取得, 返信/プッシュ/ブロードキャスト - リッチメニュー作成/画像アップ/削除/デフォルト設定/リンク/解除 - トークン未設定時はローカルJSON参照のスタブ動作 - app/lib/FriendsManager.php - 友だち一覧(検索/タグ/ソート/ページング), 同期, 詳細, 追加/アンフォロー - app/lib/repo/ - RepoFactory.php(tags/queue) - QueueRepository.php(enqueue/pop/remove) - TagsRepository.php(list/save/delete; 文字列配列とオブジェクト配列両対応) [データストア(JSON)] - friends.json: 友だち一覧・メタ(フォロー状態/タグなど) - friends_cache.json: 補助キャッシュ(必要に応じ) - messages/{userId}.json: チャット履歴 - message_queue.json: 送信キュー - tags.json: タグ定義(カテゴリ/アクション) - user_fields.json: 差し込み用フィールド定義 - user_field_values.json: ユーザーごとの差し込み値 - message_templates.json: テンプレ本文/ボタン - richmenus.json: リッチメニュー定義(画像パス/属性) - sync_status.json: 同期ステータス - scenarios.json: シナリオ定義 - scenarios_state.json: シナリオ実行状態 - postback_seen.json: Postback連打抑制 [API 機能一覧(app/api)] - bot/ - bot/info.php: /v2/bot/info を叩き basicId を返す - broadcast/ - custom.php: 任意テキストをブロードキャスト送信 - custom_button.php: テキスト+QuickReply/ボタンの一斉送信用メッセージ組立て→送信 - register_invite.php: 「気になる…」Postback付きの招待を一斉送信 - chat/ - append.php: 指定ユーザーの履歴に1件追記(送受信ログ) - history.php: 履歴取得(limit/since対応、昇順、末尾limit件) - debug/ - line_check.php: アクセストークン疎通(bot info / followers ids) - friends/ - list.php: 友だち一覧(ページング/検索/タグ/ソート) - detail.php: ユーザー詳細 - status.php: 同期ステータス(最終同期日時/総数) - sync.php: 友だち同期(LINE→ローカル反映) - tags.php: ユーザーのタグ更新+新規タグ追加時アクション(テンプレ送信 or キュー投入) - messages/ - send.php: 任意テキストの個別送信+履歴追記 - send_template.php: テンプレID指定送信(差し込み置換・ボタン付きテンプレ対応) - templates.php: テンプレ一覧/検索/作成/更新/削除 - user_fields.php: 差し込みフィールド定義の取得/登録/削除 - user_field_values.php: 差し込み値の取得/セット/一括セット/削除 - queue.php: 送信キュー処理(送信・履歴・シナリオ進捗更新・後アクション) - richmenu/ - create.php: ローカルのリッチメニューレコード作成(タイトルのみ) - save.php: 定義保存/更新、必要時にLINE作成・画像保存/アップロード - list.php: ローカルに保存された一覧を返す - image.php: 画像配信(ローカル優先→LINEからプロキシ) - default.php: デフォルトリッチメニュー設定 - default_info.php: 現在のデフォルトID取得とローカル定義の突合 - clear_default.php: デフォルト解除 - link.php: 指定ユーザーへリッチメニュー紐付け(ローカルIDなら作成・画像アップも) - unlink.php: 紐付け解除 - delete.php: ローカル/画像/LINE側削除 - シナリオ関連 - scenarios.php: シナリオの検索/一覧、作成/更新/削除 - scenarios_run.php: 実行状態の取得、開始(各ステップをスケジュール解釈してキュー投入)、停止 - webhook/ - line.php: LINE Webhook 受信 - message(text): 履歴追記 - follow: 友だち追加 + on_follow/on_register シナリオ起動 - unfollow: アンフォロー反映 - postback: 旧式("register")/新式("pb=base64(json)")対応(登録/サンクス/URLボタン送信) [バックグラウンドジョブ(app/jobs)] - daemon.php: 常駐ループで runner.php を一定間隔で実行(Windows は NSSM 等でサービス化) - runner.php: 1サイクル分の処理 - 送信キュー処理(本文送信、ボタン送信、履歴、シナリオ進捗、後アクション) - 友だち同期(1時間ごと) - リッチメニュースケジュール(将来拡張用) [フロントエンド] - public/index.php: view 切替(friends/dashboard/messages/scenarios/fields/richmenu/tags/friend) - assets/js/*.js, assets/css/*.css: 画面操作とスタイル - templates/*.php: 各画面のテンプレート - friends 画面: 検索/タグ/ソート/同期、登録招待/一斉送信ボタン(API連携) [セキュリティ/運用] - Webhook 署名検証(LINE_CHANNEL_SECRET 設定時のみ有効) - Postback 連打抑制(postback_seen.json に時刻記録) - JsonStore によるロック・アトミック更新 - トークン未設定時は LineClient がスタブ動作(開発/ローカル検証向け) 以上。