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 | データ品質・バリデーション、共通基盤系ユーティリティ |
✓ 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受信APIFaxPdfOcrApi- OCR結果処理APIGenMoveinDataFromTextService- フリーテキスト解析
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/ |