ClassLab Salesforce 環境ガイド

本ドキュメントは、ClassLab(CL)のSalesforce環境における基本的な処理とアーキテクチャを解説します。
新生活に必要なサービス(電気・ガス・水道・インターネット等)をワンストップで提供するプラットフォームの技術基盤です。

Salesforce 26ドメイン ワンストップサービス ライフライン
26 ドメイン数
4 主要オブジェクト
12+ トリガー
6 外部連携
💡
このドキュメントについて

ClassLabのSalesforce環境を理解するための包括的なガイドです。システム構成、オブジェクト設計、トリガー処理、外部連携などを網羅しています。

📊

システム構成

ビジネス概要、業務フロー、チーム構成

🏗️

26ドメイン構成

顧客対応系、ポータル系、AI/自動化系など

📦

主要オブジェクト

MoveIn__c、ServiceGuide__c、Account等

トリガー処理

MoveIn、ServiceGuide関連トリガー

🔄

フロー処理

レコードトリガーフロー、スケジュールフロー

🔗

外部連携

AI送客、LINE/WeChat、イタンジ連携

📊

1. システム全体構成

1.1 ビジネス概要

🏠
ClassLabとは

新生活に必要なサービス(電気・ガス・水道・インターネット等)をワンストップで提供するプラットフォームです。

1.2 業務フローとデータの流れ

STEP 1 NW(営業)
🏢
Account(取引先)作成
NW(営業)が不動産会社に営業 → 不動産会社レコードを作成
STEP 2 不動産会社
📋
MoveIn__c(入居)作成
不動産会社がお客様情報を送客 → 入居レコードを作成(紹介元不動産 → Account への参照)
👤
Contact(個人取引先)自動作成
トリガーにより入居者の連絡先が自動作成される
STEP 3 CX(コールセンター)
📞
ServiceGuide__c(サービス案内)作成
CXが架電・サービス案内 → 各サービスごとにSGを作成
電気SG
ガスSG
水道SG

※ 1入居に複数のSGが紐づく

STEP 4 EA(事務)
📝
ServiceGuide__c を更新
EA(事務)が事務処理 → 申込完了、金額、報酬入金を更新

1.3 チーム構成

チーム 役割 主な操作オブジェクト
NW(営業) 不動産会社への営業 Account
CX(コールセンター) 架電・サービス案内 MoveIn__c, ServiceGuide__c
EA(事務) 申込後の事務処理 ServiceGuide__c
✓ Quick Checklist
  • ClassLabはライフラインワンストップサービスのプラットフォーム
  • NW→不動産→CX→EAの流れでデータが作成・更新される
  • 主要な3チームがそれぞれ異なるオブジェクトを操作
🏗️

2. 26ドメイン構成

CLのSalesforce環境は26ドメインで構成されています。

カテゴリ ドメイン数 主なドメイン
顧客対応系 4 架電効率化、インサイドセールス、動的マニュアル、問い合わせ管理
顧客向けポータル系 3 不動産会社様利用ページ、案内内容確認ページ、ライフライン代理店
AI/自動化系 3 AI送客、AIトレーナー、自動申込
外部連携系 6 LINE・WeChat連携、ZoomPhone、スマサポ連携、イタンジ連携、不動産会社システム連携、OCCTO地点番号検索
内部管理系 6 従業員管理、不動産管理、データ変更履歴管理、メールonSalesforce、シフト管理、空室通電
その他 4 データ品質・バリデーション、共通基盤系ユーティリティ

詳細: doc/Architecture.md

✓ Quick Checklist
  • 26ドメインが6カテゴリに分類される
  • 外部連携系が最多(6ドメイン)
  • AI/自動化系には3つのドメインが含まれる
📦

3. 主要オブジェクト

3.1 オブジェクト関連図

🏢
Account(取引先)
= 不動産会社
▼ Lookup (IntroductionFor__c)
📋
MoveIn__c(入居)
中核オブジェクト
入居者情報(氏名、電話、メール、住所)、入居予定日、紹介日、架電状況、サービス禁止フラグ(電気禁止、ガス禁止等)
▼ Master-Detail
📞
ServiceGuide__c(サービス案内)
各ライフラインの案内管理
サービス種別(電気/ガス/水道/インターネット)、申込ステータス(26種類)、使用開始日、申込日、金額、不備管理
▼ Lookup
Service__c(サービス)
= サービスマスタ(大阪ガス、関西電力等)

3.2 MoveIn__c(入居)

入居者情報を管理する中核オブジェクト

カテゴリ 主要項目 用途
基本情報 Name(自動採番), IntroductionFor__c 入居No, 紹介元不動産
入居者情報 LastName__c, FirstName__c, MobilePhone__c, Email__c 氏名、連絡先
住所 PostalCode__c, Prefectures__c, Municipality__c, Building__c, RoomNumber__c 住所情報
日付 MoveInDate__c, ReferralDate__c, FirstTelDate__c 入居予定日、紹介日、初回架電日
架電管理 Satus__c, CumulativeNumber__c 架電状況、累計架電数
サービス ElecProhibited__c, GasAcquisitionProhibited__c 獲得禁止フラグ
⚠️
注意: 表記ゆれについて

Satus__c(Status ではない)など、既存の表記に注意してください。

3.3 ServiceGuide__c(サービス案内)

各ライフラインサービスの案内・申込状況を管理

カテゴリ 主要項目 用途
親レコード MoveIn__c(Master-Detail) 入居への紐付け(必須
サービス Service__c(Lookup), type__c サービスマスタ、種別
ステータス AgencyStatus__c 代理店申込状況(26種類)
日付 CompletDate__c, ApplicationDate__c, AfterConfirmationDt__c 使用開始日、申込日、後確日
金額 Amount__c, Deposited__c 金額、報酬入金済み
数式項目 MoveIn_LastName__c, MoveIn_MobilePhone__c 入居情報の参照表示
✓ Quick Checklist
  • MoveIn__cは中核オブジェクト(入居者情報管理)
  • ServiceGuide__cはMoveIn__cにMaster-Detailで紐づく
  • 申込ステータスは26種類ある
  • 表記ゆれ(Satus__c等)に注意

4. トリガー処理

4.1 MoveIn__c 関連トリガー

トリガー名 イベント 処理内容
AddressCheckTrigger before insert/update 住所チェック、デフォルト値設定
CreateServiceGuideTrigger after insert 入居作成時にサービス案内を自動作成
CreateServiceGuideForMultiLangTrigger after insert 多言語ユーザー向けサービス案内を自動生成
CreatePersonAccountTrigger after insert 入居者のContact(個人取引先)を自動作成

4.2 ServiceGuide__c 関連トリガー

トリガー名 イベント 処理内容
BeforeCreateServiceGuideTrigger before insert/update 作成前の検証、ルール適用
CreateServiceGuideTrigger after insert MoveInから情報をコピー
ServiceGuideSetIncentiveTrigger after insert/update インセンティブ・紹介料の自動計算
GuidanceRulesTrigger after insert/update 案内ルールに基づく処理

4.3 その他の重要トリガー

トリガー名 対象オブジェクト 処理内容
SNSAccountTrigger SNSAccount__c ウェルカムメッセージ自動送信
SNSMessageTrigger SNSMessage__c メディアファイル処理
EmployeeTrigger Employee__c 従業員スキル割り当て
SystemErrorTrigger SystemError__c エラー通知メール送信
RecordModificationTrackTrigger 複数 データ変更履歴追跡
✓ Quick Checklist
  • MoveIn作成時にContact、ServiceGuideが自動作成される
  • beforeトリガーで検証、afterトリガーで関連レコード作成
  • エラー発生時はSystemError__cで通知される
🔄

5. フロー処理

5.1 MoveIn__c 関連フロー

フロー名 種類 処理内容
MoveInFlow レコードトリガー 入居レコードの主要ロジック
MoveInFlowBeforeSaved レコードトリガー(Before) 保存前の事前処理
AfterCallSendMessage レコードトリガー(After) 架電後のSMS送信

5.2 ServiceGuide__c 関連フロー

フロー名 種類 処理内容
serviceGuideFlow レコードトリガー 申込処理・状況更新
PaymentDate レコードトリガー 支払情報・入金管理
✓ Quick Checklist
  • Before/Afterの両方でフローが存在
  • 架電後にSMS送信フローが発火
  • 支払情報もフローで管理
📊

6. バッチ処理

6.1 定期実行バッチ

バッチ名 実行タイミング 処理内容
AccountFieldSummaryForMovein 毎日 取引先に入居統計情報を集計(最終送客日、累計売上、送客件数)
ImportItanjiAPIPropBatch 毎日 イタンジAPIから物件情報を同期
MoveInCreationBatch 毎日 イタンジAPI/CSVから入居者データを自動作成
ElecStopAlertBatch 毎日 空室通電停止アラート
SNSMessagePendingScheduler 毎時間 LINE/WeChatメディアファイルのPending処理
WeChatAccessTokenRefreshScheduler 毎2時間 WeChatアクセストークン自動リフレッシュ

6.2 オンデマンドバッチ

バッチ名 処理内容
BulkOutputPaymentFormBatch 支払書PDF一括出力
ZoomTranscriptionsMoveInBatch Zoom通話内容をMoveInに紐付け
✓ Quick Checklist
  • 定期バッチは毎日〜毎2時間で実行
  • イタンジ連携バッチで物件・入居データを同期
  • SNS関連はPending処理とトークンリフレッシュが定期実行
🔗

7. 外部連携

7.1 AI送客(FaxOcr機能)

FAX・PDF・テキストから入居データをAI/OCRで自動抽出

入力ソース
FAX-to-Email
外部API
テキスト入力
OCR処理 Python OCRサーバー
📷
画像から文字を認識
AI解析 OpenAI GPT-4
🤖
テキストを構造化
データ保存・確認
💾
FaxReferral__c(AI送客)作成
✏️
UIウィザードで確認・修正
完了 入居登録完了
MoveIn__c(入居)作成
関連オブジェクト・クラス

関連オブジェクト

  • FaxReferral__c(AI送客)
  • OpenAiRequest__c(API履歴)
  • OcrJsonSchema__c(スキーマ定義)

関連クラス

  • FaxPdfReferralApi - FAX/PDF受信API
  • FaxPdfOcrApi - OCR結果処理API
  • GenMoveinDataFromTextService - フリーテキスト解析

7.2 LINE・WeChat連携

多言語入居者とのSNSチャットコミュニケーション

メッセージ受信
💬
入居者がLINE/WeChatでメッセージ送信
Webhook受信
🔗
LineWebhookHandler / WeChatWebhookHandler
データ保存
📝
SNSMessage__c(メッセージ履歴)作成
🏠
SNSChatRoom__c(チャットルーム)更新
対応
👨‍💼
CXがSalesforce上で返信
関連オブジェクト
  • SNSAccount__c(SNSアカウント)
  • SNSMessage__c(メッセージ履歴)
  • SNSChatRoom__c(チャットルーム)

7.3 イタンジ連携

不動産会社との物件・入居者データ連携

処理 内容
物件同期 イタンジAPIから物件情報を定期取得
入居者同期 イタンジAPIから入居者情報を自動取得 → MoveIn作成
空室通電 空室の通電状況を管理

7.4 その他の外部連携

連携先 内容
Zoom Phone 通話記録・文字起こしをMoveInに紐付け
スマサポ FileMakerとの顧客情報同期
OCCTO 地点番号検索API
✓ Quick Checklist
  • AI送客でFAX/PDF/テキストから自動で入居データ作成
  • LINE/WeChatでお客様とチャット対応可能
  • イタンジ連携で物件・入居者データを自動同期
  • Zoom Phoneの通話記録も紐付け可能
💻

8. 主要Apexクラス

8.1 トリガーハンドラ

クラス名 対象 役割
CreateServiceGuideTriggerHandler ServiceGuide__c SG作成時の処理
BeforeCreateOrUpdateServiceGuideHandler ServiceGuide__c SG作成・更新前の検証
AddressCheckTriggerHandler MoveIn__c 住所チェック

8.2 サービス層

クラス名 役割
OpenAiService OpenAI API連携(GPT-4呼び出し)
SNSAccountService SNSアカウント統一管理
WelcomeMessageService ウェルカムメッセージ生成
ContentService コンテンツ管理
MessageService メッセージ保存

8.3 バッチクラス

クラス名 役割
AccountFieldSummaryForMovein 入居統計を取引先に集計
ImportItanjiAPIPropBatch イタンジ物件同期
MoveInCreationBatch 入居自動作成
✓ Quick Checklist
  • トリガーハンドラでビジネスロジックを分離
  • サービス層で外部連携・共通処理を管理
  • バッチクラスで定期処理を実行
⚠️

9. 開発時の注意点

9.1 命名規則の注意

🚨
表記ゆれに注意

Satus__c(Status ではない)など既存の表記に注意してください。

注意点
表記ゆれ Satus__c(Status ではない)など既存の表記に注意
略称 SG = ServiceGuide、MI = MoveIn

9.2 処理順序の注意

1オブジェクトに複数のトリガー/フローがあるため、処理順序を確認

MoveIn__c への INSERT
Before Insert トリガー
AddressCheckTrigger
Before Save フロー
MoveInFlowBeforeSaved
After Insert トリガー
CreateServiceGuideTrigger, CreatePersonAccountTrigger
After Save フロー
MoveInFlow

9.3 ガバナ制限対策

対策 実装例
バッチサイズ最小化 多くのバッチで1件単位実行
Stateful バッチ間で状態を保持
コレクション化 SOQLループを避ける
Map活用 ネストループを削減

9.4 エラーハンドリング

エラー発生
エラーが発生
記録
💾
SystemError__c レコード作成
トリガー
SystemErrorTrigger が発火
通知
📧
管理者にメール通知
✓ Quick Checklist
  • 既存の表記ゆれに注意(Satus__c等)
  • トリガー/フローの処理順序を把握
  • ガバナ制限を意識した実装
  • エラーはSystemError__cで管理・通知
📚

10. 参照ドキュメント

ドキュメント パス
システムアーキテクチャ doc/Architecture.md
ドメイン概要 doc/domains/
オブジェクト設計書 doc/detailed-design/objects/
Apex設計書 doc/detailed-design/apex/
トリガー設計書 doc/detailed-design/trigger/
フロー設計書 doc/detailed-design/flow/