ken_nogi/NodeSrv/apps/org-master-sync/README.md
Kenichiro NOGI ce58cb4be4 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合
GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。
NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは
別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter
インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:37:06 +09:00

3.6 KiB
Raw Blame History

org-master-sync

LINEWORKS・プリザンター・Keycloak横断の組織・社員管理データベース構築プロジェクト。 設計: docs/superpowers/specs/2026-08-07-org-master-sync-design.md

現状ステータス

Phase 1完了: LINEWORKS取得①fetch-lineworks→ プリザンターマスタテーブル反映②merge-masterが動作。 Phase 2完了: マスタ→Keycloak完全同期④sync-keycloakが動作。マスタの全項目プリザンターの SiteSettings.Columnsから動的取得をKeycloakのカスタム属性として同期し、項目の追加・削除の 両方に自動追従する。新規作成はClassZ=有のみ、既存ユーザーはCheck062に応じて無効化のみ 削除はしない、マスタからレコード自体が消えた場合のみKeycloakユーザーを完全削除する。 前回同期状態はconfigs/keycloak-sync/で管理。 マスタテーブルはプリザンターSiteId=1.envPLEASANTER_MASTER_SITE_ID)。 ③sync-pleasanterは本番移行後に着手別プランで対応

セットアップ

cd apps/org-master-sync
npm test   # ユニットテスト実行(node --test)

.envは3システム分の認証情報を含むgitignore対象、既に設定済み。 Keycloak側はorg-master-syncクライアントのサービスアカウントにrealm-managementrealm-adminロールが 付与済みUser Profile属性定義の動的追加・削除に必要。Keycloak管理コンソールで1回のみ設定済み

コマンド

node src/commands/fetch-lineworks.js   # ① LINEWORKSから全件取得 → data/master-source/lineworks-snapshot.json
node src/commands/merge-master.js      # ② マスタテーブル(SiteId=1)へ突合・反映
node src/commands/sync-keycloak.js [--execute]  # ④ マスタをKeycloak(nexthdレルム)へ完全同期

運用上の注意:

  • ④実行前には必ず①②を先に実行すること。LINEWORKS退職者検知は都度の実行に依存するため、①②を経ずに④だけを実行すると在籍状態が古いままKeycloakへ反映される
  • ④はプリザンター側でカラムが削除されると対応するKeycloak属性も削除し、マスタレコード自体が削除されると対応するKeycloakユーザーも完全削除する完全同期。ドライランで「属性削除予定」「delete予定」件数を必ず確認してから--executeすること

Claude Skill経由でも起動可能.claude/skills/org-fetch-lineworks/ / org-merge-master/ / org-sync-keycloak/)。

ディレクトリ構成

org-master-sync/
  .env           認証情報(git管理対象外)
  keys/          LINEWORKS秘密鍵(git管理対象外)
  src/
    lib/         lineworksAuth.js / lineworksClient.js / pleasanterClient.js / keycloakClient.js / keycloakColumnSync.js
    config/      masterFields.jsマスタ項目→プリザンターフィールドの割当定義
    commands/    fetch-lineworks.js / merge-master.js / sync-keycloak.js
  scripts/       一回限りの移行・保守スクリプト(本番→テスト環境インポート等)
  test/          node --testによるユニットテスト
  data/          取得データ・スナップショット(git管理対象外)
  pleasanter-saml/  SAML SSO設定一式

他システムから独立したフォルダとして構成。単体で別リポジトリへ切り出す場合もこのフォルダごと移動すればよい。