ダッシュボード

PRODUCTION
System Online
👥
利用者
統合件数
🧑‍⚕️
職員
統合件数
🏠
事業所
登録件数
📥
最終取込
最近の取込履歴
日時拠点ファイルステータス詳細
読み込み中...
ZIPファイルアップロード
📁

FirstCareV7.zip をここにドロップ
またはクリックして選択

Drive 自動取込 スケジューラー稼働中

Google Drive の監視フォルダを今すぐチェックして新しい ZIP を取込みます。

自動実行間隔

※ スケジューラーは設定間隔に満たない場合スキップされます。

FC エージェント管理
読み込み中...
手動アップロード同期

サーバー上の FC エージェントに対して、今すぐ ZIP を吐き出して Storage にアップロードするよう指示します。
エージェントが次回ポーリング(最大1分以内)で受け取り実行します。

取込履歴
日時拠点ファイル所要時間ステータス詳細
読み込み中...
利用者マスター(統合)
「読み込む」をクリックしてください
職員マスター(統合)
「読み込む」をクリックしてください
freee 除外リスト 同期対象から外す freee 従業員の管理
読み込み中...
事業所マスター
「読み込む」をクリックしてください
職員変更履歴(入社・退職・改名)
「読み込む」をクリックしてください
職員DB × Workspace 照合
APIマニュアル読み取り専用エンドポイント
🔑
全リクエストにヘッダー x-api-key: <MASTER_API_KEY> が必要です(Secret Manager: tougou-db-f9f9e)
Jigyosho(1,220件+)
GEThttps://asia-northeast1-tougou-db-f9f9e.cloudfunctions.net/getJigyosho
Shokuin(78件+)
GEThttps://asia-northeast1-tougou-db-f9f9e.cloudfunctions.net/getShokuin
Riyousha(1,700件+)
GEThttps://asia-northeast1-tougou-db-f9f9e.cloudfunctions.net/getRiyousha
クイックスタート
<!-- headに追加 -->
<script src="https://tougou-db-f9f9e.web.app/master-api.js"></script>

// APIキーを初期化(Secret Manager: MASTER_API_KEY)
MasterAPI.init("your-master-api-key");

// どこからでも呼び出せます
const jigyosho = await MasterAPI.getJigyosho();
const shokuin  = await MasterAPI.getShokuin();
const riyousha = await MasterAPI.getRiyousha();

// 氏名検索
const results = await MasterAPI.searchRiyousha("田中");
スキーマ: 事業所
#列名説明種別
1統合事業所ID主キーPK
2事業所番号10桁コード基本
3名称 / 正式名称名前基本
4住所_郵便番号〜その他2住所住所
5TEL / FAX / eメール連絡先連絡先
6担当_1〜2担当者情報連絡先
7有効フラグ有効=1システム
8レコード更新情報最終更新システム
スキーマ: 職員
#列名説明種別
1統合職員ID主キーPK
2職員名称_姓 / 名 / 姓名氏名基本
3性別 / 生年月日属性基本
4自宅電話 / 携帯 / eメール連絡先連絡先
5介護支援専門員番号ケアマネ番号介護
6有効フラグ有効=1システム
スキーマ: 利用者
#列名説明種別
1利用者ID / 統合利用者ID主キー(UUID)PK
2姓 / 名 / 姓名氏名基本
3統合職員ID / 担当者名担当ケアマネFK
4性別 / 生年月日属性基本
5住所_郵便番号〜その他2住所住所
6電話 / 携帯 / FAX連絡先連絡先
7連絡先1〜3緊急連絡先連絡先
8主治医 / 歯科医 / 薬局医療医療
9保険者番号 / 被保険者番号介護保険介護
10要介護状態区分等要介護度介護
11拠点所属拠点基本
System Design Document
279 統合利用者DB — システム設計書
ファーストケア(FC)自動エクスポート → GCS → Cloud Functions → Firestore | 2026-04-12 更新
Node.js 22 Cloud Functions v2 Cloud Firestore GCS(Cloud Storage) fc_agent(Windows)
月額コスト(旧)
$255
Cloud Run 常時稼働
月額コスト(現在)
$1.62
fc_agent + Cloud Functions
削減率
▼99%
$253/月 削減
アーキテクチャ概要(2026-04-12 現在)
💻
ファーストケア
いわき・札幌
10分ごとにZIP自動エクスポート
C:\FcCsvExport\
🔨
fc_agent
Pub/Sub Pull型 / NSSMサービス
1時間ごとに起動
ZIPをGCSへアップロード
GCS
Cloud Storage
firstcare-imports-v2/
kyoten/file.zip
GCSトリガー ↓ Cloud Functions
🔆
processFirstCareZipV2
Cloud Functions
ZIPを展開・CSV解析
keika_kiroku は即時委譲
processKeikaCsv
最優先処理
経過記録を約4秒で反映
差分チェックポイント管理
🗄
Firestore
統合利用者DB
riyousha / records
hihosho / jigyosho
稼働拠点(2026-04-12 現在)
拠点kyoten ID利用者数ZIP処理時間fc_agent サーバーステータス
いわき iwaki 240名 約15分/ZIP Windows Server(いわき) 稼働中
札幌 sapporo 1,567名 約30分/ZIP Windows Server(札幌) 稼働中
fc_agent — Windows自動アップロードエージェント2026-04-11 追加
動作フロー
  1. ファーストケアが10分ごとにZIPをエクスポート
  2. Cloud Scheduler が2時間ごとに Pub/Sub へ命令発行
  3. fc_agent_pubsub.ps1(NSSMサービス)が30秒ポーリングで命令を受信
  4. fc_agent が C:\FcCsvExport\ のZIPをGCSへアップロード(ZIPハッシュ比較で差分のみ処理)
  5. アップロード成功後にZIPを自動削除
  6. GCSトリガーで processFirstCareZipV2 が自動起動
設定ファイル(uploader_servers コレクション)
実行スケジュール2時間ごと(Cloud Scheduler → Pub/Sub)
ZIPパスC:\FcCsvExport\*.zip
GCSバケットfirstcare-imports-v2
削除設定アップロード後に自動削除
設定管理Firestore: uploader_servers
技術スタック
Agent(NEW)
fc_agent(PowerShell)
Cloud Scheduler + Pub/Sub / NSSMサービス常駐
Runtime
Cloud Functions v2
Node.js 22 / TypeScript
Trigger
GCS Storage トリガー
onObjectFinalized(v2)
Database
Cloud Firestore
NoSQL Document DB
Storage
Cloud Storage(GCS)
asia-northeast1 (東京)
Auth
Firebase Auth + Google
279279.net ドメイン制限
Cloud Functions 一覧
関数名トリガー役割優先度
processFirstCareZipV2 GCS Storage ZIPを展開、CSV分類、keika_kiroku を processKeikaCsv に委譲、他CSVをポリシーゲート経由で処理 メイン
processKeikaCsv 直接呼び出し 経過記録(keika_kiroku)を最優先処理。差分チェックポイントで重複書き込みを防止。約4秒で完了 最優先
csv_process_policy Firestore設定 keika_kiroku以外のCSVの処理間隔を制御するポリシーゲート 設定
getUploaderConfig HTTP fc_agent がGCSアップロード先・設定を取得するためのAPI
Firestore コレクション一覧(2026-04-12 現在)
コレクションDoc ID説明ソース種別
riyoushaFC UUID統合利用者(2拠点統合、名寄せ済み)riyousha.csvMaster
recordskeika_kiroku_{uuid}_{kyoten}_{ts}経過記録(履歴保持。上書きしない設計)keika_kiroku.csv記録
hihosho{uuid}_{kyoten}_{num}被保険者証hihosho.csv介護
jigyoshoPK_サービス事業者事業所マスタjigyosho.csvMaster
shokuin / unified_shokuin{code}_{seq}職員マスタ(統合職員)shokuin.csvMaster
import_logsautoインポートログシステム
import_checkpointskyoten_csvkeika差分チェックポイント(重複防止)システム
csv_process_policydefaultCSV処理ポリシー・間隔設定システム
kyoten_id_mappingauto拠点ローカルID ↔ UUID 対応表システム
uploader_serversserver-idfc_agent サーバー設定(ZIP経路・スケジュール)システム
kyoten_configsapporo / iwaki拠点設定マスタシステム
セキュリティ & 認証
レイヤー方式詳細
Web ConsoleFirebase Auth + Google OAuth279279.net ドメイン制限
API Endpointsx-api-key ヘッダーSecret Manager 管理(MASTER_API_KEY)
CORSapplyCors() ホワイトリスト279279.net / tougou-db-f9f9e.web.app のみ
GCS(Storage)RulesFirebase Security Rules279279.net ユーザーのみ firstcare-imports-v2/** へ書き込み可
fc_agent 認証Firebase Service AccountWindows Server に SA キーを配置、GCS直接アップロード
リポジトリ
GitHubytsukuda4470/master-db-cloud-sync
Branchmain
GCPプロジェクトtougou-db-f9f9e
Regionasia-northeast1 (東京)
fc_agent格納scripts/fc_agent/(PowerShell)
拠点一覧ファーストケアの拠点設定
読み込み中...
アップローダー管理Windows Server → Cloud Storage 自動アップロード
読み込み中...
アップロード履歴 各サーバーの最近のアップロード状況
日時(JST)サーバー拠点ステータスファイルサイズ詳細
読み込み中...
管理者設定コンソール管理者の追加・削除

管理者のみが システム設計書 / 拠点設定 / 管理者設定 にアクセスできます。

メールロール追加者操作
読み込み中...
freee 認証管理 再デプロイ不要でトークンを更新できます
確認中...
🔑 再認証手順
  1. freee 認証ページを開く ↗
  2. 279のfreeeアカウントでログイン → 「アプリを連携する」を許可
  3. 表示された認可コードをコピーして下に貼り付け → 「更新する」
Google Chat 通知設定 取込・エラー発生時のチャット投稿ルールを設定
確認中...
投稿タイミング
Webhook URL
Google Chat の受信 Webhook URL(変更する場合のみ入力)
※ 空欄のまま保存すると、現在登録済みのURLはそのまま保持されます。上書きされません。
2026-04-12 データモデル最新状況
2026-04-10: pk_sapporo / pk_iwakifirstcare_pks: { sapporo, iwaki }
全拠点のPKを1フィールドに集約。新拠点追加時はコード修正不要。
2026-04-11: records コレクション追加(経過記録)
keika_kiroku_{uuid}_{kyoten}_{timestamp} 形式。上書きせず履歴を保持。import_checkpoints で差分管理。
🗂 Firestore ER図統合利用者DBの全コレクション構造
erDiagram kyoten_config { string id PK "sapporo / iwaki" string name "表示名" number code "FC ID種類ID" string drivePattern "ZIPファイル名" boolean active "取込ON/OFF" } riyousha { string id PK "FC UUID" string shimei "氏名" string birthdate "生年月日" object firstcare_pks "拠点別PK map" string source "fc/merged/ss_only" string ss_riyoushaId "旧SS doc ID" } records { string id PK "keika_{uuid}_{kyoten}_{ts}" string riyoushaId "利用者UUID" string kyoten "拠点ID" string csvType "keika_kiroku" string content "記録内容" string importedAt "取込日時" } hihosho { string id PK "{uuid}_{kyoten}_{num}" string riyoushaId "利用者UUID" string kyoten "拠点ID" string hokenNo "保険番号" } unified_shokuin { string id PK "{code}_{seq}" string shokuinName "職員名" string email "Workspace照合キー" string primary_kyoten "主所属拠点" object app_roles "アプリ別権限" } jigyosho { string id PK "PK_サービス事業者" string jigyoshoName "事業所名" string jigyoshoCode "介護保険番号" string kyoten "拠点ID" } import_logs { string id PK "auto" string kyoten "拠点ID" string fileName "ZIPファイル名" string status "dispatched/completed/error" string importedAt "取込日時" } import_checkpoints { string id PK "{kyoten}_{csvType}" string lastTimestamp "最終処理タイムスタンプ" string lastRowId "最終行ID" } csv_process_policy { string id PK "default" number intervalMinutes "処理間隔(分)" boolean enabled "有効/無効" } uploader_servers { string id PK "server-id" string name "サーバー名" string schedule "実行スケジュール" array kyotenPaths "拠点ZIPパス配列" boolean deleteAfterUpload "アップロード後削除" } kyoten_id_mapping { string id PK "auto" string kyoten "拠点ID" string localId "旧SS doc ID" string unifiedId "新FC doc ID" string csvType "riyousha/shokuin" } kyoten_config ||--o{ riyousha : "firstcare_pks key" kyoten_config ||--o{ unified_shokuin : "primary_kyoten" kyoten_config ||--o{ jigyosho : "kyoten" kyoten_config ||--o{ import_logs : "kyoten" kyoten_config ||--o{ kyoten_id_mapping : "kyoten" kyoten_config ||--o{ records : "kyoten" kyoten_config ||--o{ hihosho : "kyoten" kyoten_config ||--o{ import_checkpoints : "kyoten" riyousha ||--o{ kyoten_id_mapping : "unifiedId" riyousha ||--o{ records : "riyoushaId" riyousha ||--o{ hihosho : "riyoushaId"
★ 新フィールド(firstcare_pks)
旧フィールド廃止予定(pk_sapporo/pk_iwaki)
参照キー
現在の設定による月額試算
$– (¥–)
Cloud Run 実行コスト($0.0000295/秒・512MB)の試算値
ZIP処理 月間回数
月間処理時間
現状比
⬆ ZIPアップロード間隔(fc_agent) Windowsサーバーから GCS へのアップロード頻度
※ fc_agent のスケジュールタスク設定と合わせてください
現在の設定(Firestore)
読み込み中...
📋 CSV種別ごとの処理間隔 ZIPが届いても、設定間隔未満なら処理をスキップします
CSV種別 説明 処理間隔 有効 最終処理 次回処理予定 コスト寄与
読み込み中...
💰 コスト内訳 設定変更に連動してリアルタイム更新
🗄
Technical Design Document
279 統合利用者DB — 設計資料
ファーストケア自動エクスポート → fc_agent → GCS → Cloud Functions → Firestore 統合アーキテクチャ | 2026-04-12 更新
作成: 次田 / Claude
相談相手: 本田エンジニア
CONFIDENTIAL
🌐 システム全体像
flowchart LR SCHED[Cloud Scheduler\n2時間ごと] PUBSUB[Pub/Sub\nfc-agent-commands] SCHED -->|命令発行| PUBSUB subgraph WIN[Windows Server 279_SVR\n札幌・いわき両拠点担当] FC_IWA[ファーストケア いわき\n利用者240名] FC_SAP[ファーストケア 札幌\n利用者1567名] AGENT[fc_agent_pubsub.ps1\nNSSMサービス・30秒ポーリング] FC_IWA -->|ZIP生成| AGENT FC_SAP -->|ZIP生成| AGENT end PUBSUB -->|pullAgentCommand API経由| AGENT GCS[(GCS\nfirstcare-imports-v2)] AGENT -->|札幌ZIP upload| GCS AGENT -->|いわきZIP upload| GCS subgraph CF[Cloud Functions] ZIP_PROC[processFirstCareZipV2\nGCS Trigger] KEIKA[processKeikaCsv\n最優先 約4秒] ZIP_PROC -->|keika委譲| KEIKA end GCS -->|Storage Trigger| ZIP_PROC subgraph FS[Firestore 統合DB] RIY[riyousha\n利用者] REC[records\n経過記録 履歴保持] HIH[hihosho\n被保険者証] SHO[shokuin\n職員] JIG[jigyosho\n事業所] CHK[import_checkpoints\n差分管理] POL[csv_process_policy\nポリシーゲート] LOG[import_logs\n取込履歴] end ZIP_PROC --> RIY ZIP_PROC --> SHO ZIP_PROC --> JIG ZIP_PROC --> HIH ZIP_PROC --> LOG KEIKA --> REC KEIKA --> CHK subgraph APPS[利用アプリ] CARENOTE[CareNote] SOUDAN[新規相談受付] JIGYOSHO_APP[事業所検索] end RIY --> CARENOTE REC --> CARENOTE RIY --> SOUDAN SHO --> CARENOTE JIG --> JIGYOSHO_APP
統合利用者数(riyousha)
統合職員数(unified_shokuin)
事業所数(jigyosho)
2
稼働拠点数(kyoten_config)