🏢 組織ブロック
組織ブロックは、Nodeblocksアプリケーションで組織管理の包括的な機能を提供します。これらのブロックは、作成、メンバー管理、ビジネスロジックを含む組織ライフサイクル操作を処理します。
🎯 概要
組織ブロックは以下の目的で設計されています:
- 完全なCRUD操作で組織を管理 - 作成、読み取り、更新、削除の操作をサポート
- メンバー管理とロール割り当てを処理 - 組織内のメンバーシップと権限を管理
- 組織のバリデーションとビジネスルールを提供 - データ整合性とアクセス制御を確保
- マルチテナントアプリケーションアーキテクチャをサポート - 組織間の分離を実現
- 包括的なコントロールで組織管理を有効化 - 完全な管理機能を提供
📦 ブロックタイプ
🔍 スキーマ
組織データのバリデーション用のJSON Schema定義:
- organizationSchema: 基本組織エンティティ構造
- createOrganizationSchema: 組織作成のバリデーション
- updateOrganizationSchema: 組織更新のバリデーション
- getOrganizationSchema: 組織取得のバリデーション
- deleteOrganizationSchema: 組織削除のバリデーション
- organizationMembersSchema: メンバーロール割り当て配列
- upsertOrganizationMembersSchema: メンバーロールのアップサートペイロード
- getOrganizationMemberRoleSchema: メンバーロール取得
- checkOrganizationMemberExistenceSchema: メンバー存在チェック
- findOrganizationMembersSchema: メンバー一覧クエリ
- deleteOrganizationMemberSchema: メンバー削除のバリデーション
- findOrganizationsSchema: フィルタリングとページネーション付きの組織検索
- findOrganizationsForMemberSchema: オプションのロールと継承付きのメンバー別組織
- findOrganizationDescendantsSchema: オプションの深さ付きの子孫取得
- findChangeRequestsForOrganizationSchema: ページネーション付きの変更リクエスト取得
- getOrganizationFollowersSchema: ページネーションサポート付きの組織フォロワー取得
- getCertificateUploadUrlSchema: 証明書アップロードURL生成のバリデーション
- createChangeRequestSchema: 変更リクエスト作成のバリデーション
- updateOrganizationAsAdminSchema: 管理者レベルの組織更新のバリデーション
- findByOrganizationIdSchema: 組織スコープのリソース取得のバリデーション
🔧 ブロック
組織操作の純粋なビジネスロジック関数:
- createOrganization: 組織作成
- getOrganizationById: 組織データ取得
- updateOrganization: 組織更新
- deleteOrganization: 組織削除
- findOrganizations: 組織検索とフィルタリング
- calculateDirectMemberRole: メンバーの直接ロールを計算
- checkOrganizationMemberExistence: アイデンティティがメンバーかどうかをチェック
- findOrganizationMembers: ページネーションメタデータ付きでメンバーを一覧表示
- upsertOrganizationMembers: メンバーを追加/更新(既存とマージ)
- deleteOrganizationMember: 組織からメンバーを削除
- findOrganizationsForIdentity: オプションのロールフィルタリング付きで特定のアイデンティティの組織を検索
- findOrganizationsForMember: 特定のアイデンティティの組織を一覧表示
- calculateChildAncestors: 親から子の祖先を計算
- buildDescendantsQuery: 子孫検索用のクエリを構築
- buildOrganizationsForMemberByRoleQuery: メンバーロール別の組織用のMongoDBクエリを構築
- buildOrganizationsForMemberByIdsQuery: メンバーID別の組織用のMongoDBクエリを構築
- buildOrganizationsWithDescendantsQuery: 子孫を含む組織用のクエリを構築
- buildOrganizationFollowersByFollowOrganizationIdQuery: 組織フォロワー用のMongoDBクエリを構築
- buildOrganizationIdFilter: データベースクエリ用の組織IDフィルターを構築
- generateSignedLogoUploadUrl: ロゴアップロード用の署名付きURLを生成
- normalizeCertificateImage: 署名付きURL付きで組織証明書画像を正規化
- normalizeCertificateImages: 複数の組織の証明書画像を正規化
- normalizeLogoOfOwner: objectIdを署名付きURLに変換して所有者ロゴを正規化
- normalizeLogosOfOwners: 複数の所有者のロゴを正規化
- normalizeLogosOfPaginatedOwners: ページネーションされた組織所有者のロゴURLを正規化
- deleteLogoOfOwner: 所有者エンティティのストレージからロゴファイルを削除
- extractAncestors: すべての一意の祖先組織IDを抽出
- calculateInheritedMemberRole: 祖先から最高の継承メンバーロールを計算
- calculateMemberRole: 組織とアイデンティティのメンバーロール(直接または継承)を計算
- calculateMemberRoleForOrganizations: リスト内の各組織のメンバーロール情報を計算
- normalizeOrganizations:
_idフィールドを削除して組織の配列を正規化 - normalizeOrganization: 組織データからMongoDB
_idフィールドを削除 - normalizeOrganizationsForMember: メンバーレスポンス用の組織を正規化
- findChangeRequests: 組織の変更リクエストを取得
- normalizeChangeRequest: ファイルURL付きで単一の変更リクエストを正規化
- normalizeChangeRequests: ファイルURL付きで変更リクエストの配列を正規化
- validateOrganizationName: 組織名の一意性バリデーション
- createChangeRequest: データベース内の組織変更リクエスト作成
- buildUpdateOrganizationAfterNewChangeRequestPayload: 新しい変更リクエスト後の組織監査ステータス更新ペイロード
- validateAuditStatus: 変更リクエストワークフロー用の組織監査ステータスバリデーション
- エラークラス: OrganizationBadRequestError, OrganizationChangeRequestDbError, OrganizationChangeRequestError, OrganizationNotFoundError
🧰 ハンドラー
APIレスポンスフォーマット用のターミネーターと正規化ハンドラー:
- normalizeOrganizationTerminator: 単一の組織レスポンスを正規化
- normalizeOrganizationsListTerminator: 組織リストレスポンスを正規化
- deleteOrganizationTerminator: 組織削除用の204レスポンスをフォーマット
- normalizeOrganizationMemberExistenceTerminator: メンバーシップ存在レスポンスを正規化
- normalizeOrganizationMembersListTerminator: メンバーリストレスポンスを正規化
- deleteOrganizationMemberTerminator: メンバー削除用の204レスポンスをフォーマット
- upsertOrganizationMembersTerminator: メンバーアップサート用の204レスポンスをフォーマット
🛣️ ルート
組織操作用のHTTPエンドポイント定義:
- createOrganizationRoute: POST
/organizations作成ブロック付き - getOrganizationRoute: GET
/organizations/:organizationId取得ブロック付き - findOrganizationsRoute: GET
/organizations検索とページネーション付き - updateOrganizationRoute: PATCH
/organizations/:organizationId更新ブロック付き - deleteOrganizationRoute: DELETE
/organizations/:organizationId削除ブロック付き - getOrganizationMemberRoleRoute: GET
/organizations/:organizationId/members/:identityId/roleロール取得付き - checkOrganizationMemberExistenceRoute: GET
/organizations/:organizationId/members/check-existenceメンバーシップチェック付き - findOrganizationMembersRoute: GET
/organizations/:organizationId/membersメンバー一覧付き - upsertOrganizationMembersRoute: PATCH
/organizations/:organizationId/membersメンバーアップサート付き - deleteOrganizationMemberRoute: DELETE
/organizations/:organizationId/members/:identityIdメンバー削除付き - findOrganizationsForMemberRoute: GET
/organizations/members/:identityIdアイデンティティ組織付き - findOrganizationDescendantsRoute: GET
/organizations/:organizationId/descendants子孫一覧付き - getLogoUploadUrlRoute: GET
/organizations/:organizationId/logo-upload-url署名付きURL生成付き - getCertificateUploadUrlRoute: GET
/organizations/:organizationId/certificate-upload-url証明書署名付きURL生成付き - createChangeRequestRoute: POST
/organizations/:organizationId/change-requests変更リクエスト作成付き - findChangeRequestsForOrganizationRoute: GET
/organizations/:organizationId/change-requests変更リクエスト取得付き - updateOrganizationAsAdminRoute: PATCH
/admin/organizations/:organizationId/管理者レベルの組織更新付き - getOrganizationFollowersRoute: GET
/organizations/:organizationId/followersフォロワー取得とページネーション付き
🚀 機能
スキーマ、ルート、ブロックを組み合わせた完全な組織管理機能:
- createOrganizationFeature: バリデーションとルーティング付きの組織作成
- getOrganizationFeatures: 個別の組織を取得
- findOrganizationsFeatures: フィルタリングとページネーション付きで組織を検索
- editOrganizationFeatures: バリデーションとルーティング付きで組織を更新
- deleteOrganizationFeatures: 組織を削除
- getOrganizationMemberFeatures: 組織内のメンバーロールを取得
- checkOrganizationMemberExistenceFeatures: 組織内のアイデンティティメンバーシップをバリデーション
- findOrganizationMembersFeatures: ページネーション付きで組織メンバーを一覧表示
- findOrganizationsForMemberFeatures: 特定のアイデンティティの組織を一覧表示
- editOrganizationMembersFeatures: バリデーション付きで組織メンバーをアップサート
- deleteOrganizationMemberFeatures: 組織メンバーを削除
- findOrganizationDescendantsFeatures: 子孫組織を取得
- getLogoUploadUrlFeature: ロゴアップロード用の署名付きURLを生成
- getCertificateUploadUrlFeature: 証明書アップロード用の署名付きURLを生成
- createChangeRequestFeature: バリデーションと監査追跡付きの組織変更リクエスト作成
- findChangeRequestsForOrganizationFeature: ページネーション付きで組織変更リクエストを取得して正規化
- updateOrganizationAsAdminFeature: 拡張フィールドアクセス付きの管理者専用組織更新
- getOrganizationFollowersFeature: ページネーションとアバター正規化付きで組織フォロワーを取得
✅ バリデーター
組織操作用のバリデーション関数:
- hasOrgRole: 許可されたロールと組織IDに基づいて組織メンバーロールをバリデーション
- validateOrganizationAccess (非推奨): レガシーアクセスバリデーター;
hasOrgRoleに置き換え