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

59 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# org-master-sync
LINEWORKS・プリザンター・Keycloak横断の組織・社員管理データベース構築プロジェクト。
設計: [docs/superpowers/specs/2026-08-07-org-master-sync-design.md](../../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`.env`の`PLEASANTER_MASTER_SITE_ID`)。
③sync-pleasanterは本番移行後に着手別プランで対応
## セットアップ
```bash
cd apps/org-master-sync
npm test # ユニットテスト実行(node --test)
```
`.env`は3システム分の認証情報を含むgitignore対象、既に設定済み
Keycloak側は`org-master-sync`クライアントのサービスアカウントに`realm-management`の`realm-admin`ロールが
付与済みUser Profile属性定義の動的追加・削除に必要。Keycloak管理コンソールで1回のみ設定済み
## コマンド
```bash
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設定一式
```
他システムから独立したフォルダとして構成。単体で別リポジトリへ切り出す場合もこのフォルダごと移動すればよい。