furniture-3d-system-Wu/furniture-3d-system/scripts/sql/check-internal-master-data-foundation.sql

1307 lines
67 KiB
SQL

-- Internal master data foundation health check.
-- Read-only. Reports data quality and truth-source risks inside the system.
WITH required_index_guards(index_name, table_name, predicate_hint, definition_hint) AS (
VALUES
('AssetSeries_code_key', 'AssetSeries', NULL, NULL),
('AssetFamily_code_key', 'AssetFamily', NULL, NULL),
('AssetVariant_code_key', 'AssetVariant', NULL, NULL),
('AssetVariant_assetFamilyId_identityKey_key', 'AssetVariant', NULL, NULL),
('AssetVariant_barcode_active_key', 'AssetVariant', '"deletedAt" IS NULL', 'upper(btrim('),
('AssetFamilySeriesCompatibility_assetFamilyId_assetSeriesId_key', 'AssetFamilySeriesCompatibility', NULL, NULL),
('DraftGroup_code_key', 'DraftGroup', NULL, NULL),
('PlanningTemplate_code_key', 'PlanningTemplate', NULL, NULL),
('Substrate_code_key', 'Substrate', NULL, NULL),
('WarehouseLocation_code_key', 'WarehouseLocation', NULL, NULL),
('User_email_normalized_key', 'User', NULL, 'lower(btrim('),
('User_name_normalized_key', 'User', NULL, 'btrim'),
('Department_name_normalized_key', 'Department', NULL, 'btrim'),
('Department_externalId_normalized_key', 'Department', 'NULLIF(btrim', 'btrim'),
('EmployeeDirectory_dingtalkUserId_normalized_key', 'EmployeeDirectory', 'NULLIF(btrim', 'btrim'),
('EmployeeDirectory_dingtalkUnionId_normalized_key', 'EmployeeDirectory', 'NULLIF(btrim', 'btrim'),
('EmployeeDirectory_jobNumber_normalized_key', 'EmployeeDirectory', 'NULLIF(btrim', 'btrim'),
('EmployeeDirectory_mobile_normalized_key', 'EmployeeDirectory', 'NULLIF(btrim', 'btrim'),
('WarehouseLocation_active_position_key', 'WarehouseLocation', '"isActive" = true', 'lower(btrim('),
('PackagedItem_code_key', 'PackagedItem', NULL, NULL),
('PreSku_draftGroupId_sequence_key', 'PreSku', NULL, NULL),
('Product_modelNumber_key', 'Product', NULL, NULL),
('ProductSKU_skuCode_key', 'ProductSKU', NULL, NULL),
('ProductSKU_active_skuCode_normalized_key', 'ProductSKU', '"deletedAt" IS NULL', 'upper(btrim('),
('ProductSKU_sourcePreSkuId_key', 'ProductSKU', NULL, NULL),
('IntakeNonIntegratedProduct_spu_brand_key', 'IntakeNonIntegratedProduct', NULL, NULL),
('IntakeNonIntegratedProduct_spu_brand_normalized_key', 'IntakeNonIntegratedProduct', NULL, 'upper(btrim('),
('ProductSkuAssetProfile_skuId_key', 'ProductSkuAssetProfile', NULL, NULL),
('ProductSkuAssetProfile_barcode_active_non_empty_key', 'ProductSkuAssetProfile', '"skuDeletedAt" IS NULL', 'upper(btrim('),
('PreSkuBasicInfo_preSkuId_key', 'PreSkuBasicInfo', NULL, NULL),
('PreSkuBasicInfo_formalSkuCode_non_empty_key', 'PreSkuBasicInfo', 'NULLIF(btrim(', 'upper(btrim('),
('PreSkuBasicInfo_barcode_non_empty_key', 'PreSkuBasicInfo', 'NULLIF(btrim(', 'upper(btrim('),
('IntakeNonIntegratedProductProfile_productId_key', 'IntakeNonIntegratedProductProfile', NULL, NULL),
('IntakeNonIntegratedSkuItem_productId_skuItemId_key', 'IntakeNonIntegratedSkuItem', NULL, NULL),
('IntakeNonIntegratedSkuItem_skuCode_non_empty_key', 'IntakeNonIntegratedSkuItem', '"dataQualityStatus" = ''READY''', 'upper(btrim('),
('IntakeNonIntegratedSkuItem_barcode_non_empty_key', 'IntakeNonIntegratedSkuItem', '"dataQualityStatus" = ''READY''', 'upper(btrim('),
('MasterDataQualityDecision_open_target_key', 'MasterDataQualityDecision', 'status = ''APPROVED_INCOMPLETE''', NULL),
('ProductPatentRecord_patentGroupKey_key', 'ProductPatentRecord', NULL, NULL),
('IntakeReferenceLibraryItem_libraryType_itemKey_key', 'IntakeReferenceLibraryItem', NULL, NULL),
('IntakeReferenceLibraryItem_libraryType_code_non_empty_key', 'IntakeReferenceLibraryItem', 'NULLIF(btrim(code),', 'upper(btrim('),
('IntakeReferenceLibraryItem_libraryType_itemKey_normalized_key', 'IntakeReferenceLibraryItem', NULL, 'lower(btrim('),
('IntakeReferenceLibraryItem_spu_rule_name_non_empty_key', 'IntakeReferenceLibraryItem', '"libraryType" = ''SPU_RULE''', NULL),
('IntakeReferenceLibraryItem_spu_rule_name_normalized_key', 'IntakeReferenceLibraryItem', '"libraryType" = ''SPU_RULE''', 'lower(btrim('),
('SpuNumberCounter_productCategory_key', 'SpuNumberCounter', NULL, NULL),
('SpuNumberCounter_productCategory_normalized_key', 'SpuNumberCounter', NULL, 'lower(btrim('),
('SpuNumberCounter_prefix_key', 'SpuNumberCounter', NULL, NULL),
('Material_code_key', 'Material', NULL, NULL),
('Hardware_code_key', 'Hardware', NULL, NULL),
('CommonComponent_code_key', 'CommonComponent', NULL, NULL),
('BrandMaterialBinding_brand_material_normalized_key', 'BrandMaterialBinding', NULL, 'lower(btrim('),
('Panel_product_sku_code_normalized_key', 'Panel', NULL, 'upper(btrim('),
('ProductCategory_name_normalized_key', 'ProductCategory', NULL, 'lower(btrim('),
('MaterialCategory_name_normalized_key', 'MaterialCategory', NULL, 'lower(btrim('),
('HardwareCategory_name_normalized_key', 'HardwareCategory', NULL, 'lower(btrim('),
('CommonComponentCategory_name_normalized_key', 'CommonComponentCategory', NULL, 'lower(btrim('),
('SubstrateCategory_name_normalized_key', 'SubstrateCategory', NULL, 'lower(btrim('),
('SubstrateEnvironmentGrade_name_normalized_key', 'SubstrateEnvironmentGrade', NULL, 'lower(btrim('),
('SubstrateSurfaceOption_name_normalized_key', 'SubstrateSurfaceOption', NULL, 'lower(btrim('),
('SubstrateSystemNameOption_name_normalized_key', 'SubstrateSystemNameOption', NULL, 'lower(btrim('),
('SubstrateThicknessSpec_name_normalized_key', 'SubstrateThicknessSpec', NULL, 'lower(btrim('),
('ProviderConfig_active_service_key', 'ProviderConfig', '"isActive" = true', NULL),
('ThemeConfig_name_normalized_key', 'ThemeConfig', NULL, 'lower(btrim('),
('ThemeConfig_default_key', 'ThemeConfig', '"isDefault" = true', NULL)
)
SELECT
'missing_required_index_guard' AS check_name,
guard.index_name,
guard.table_name,
pg_get_expr(pg_idx.indpred, pg_idx.indrelid) AS actual_predicate,
guard.predicate_hint AS expected_predicate_hint,
pg_get_indexdef(idx.oid) AS actual_definition,
guard.definition_hint AS expected_definition_hint
FROM required_index_guards guard
LEFT JOIN pg_class idx ON idx.relname = guard.index_name
LEFT JOIN pg_index pg_idx ON pg_idx.indexrelid = idx.oid
LEFT JOIN pg_class table_cls ON table_cls.oid = pg_idx.indrelid
LEFT JOIN pg_namespace ns ON ns.oid = table_cls.relnamespace
WHERE idx.oid IS NULL
OR ns.nspname <> 'public'
OR table_cls.relname <> guard.table_name
OR pg_idx.indisunique IS DISTINCT FROM true
OR (
guard.predicate_hint IS NOT NULL
AND COALESCE(pg_get_expr(pg_idx.indpred, pg_idx.indrelid), '') NOT LIKE '%' || guard.predicate_hint || '%'
)
OR (
guard.definition_hint IS NOT NULL
AND COALESCE(pg_get_indexdef(idx.oid), '') NOT LIKE '%' || guard.definition_hint || '%'
)
ORDER BY guard.index_name;
WITH required_constraint_guards(constraint_name, table_name, expression_hint) AS (
VALUES
('IntakeProductProfile_developmentKind_allowed', 'IntakeNonIntegratedProductProfile', '"productDevelopmentKind" = '''''),
('IntakeNonIntegratedSkuItem_missingRequiredFields_allowed', 'IntakeNonIntegratedSkuItem', 'missingRequiredFields'),
('IntakeNonIntegratedSkuItem_quality_state_required_fields', 'IntakeNonIntegratedSkuItem', 'dataQualityStatus'),
('MasterDataQualityDecision_target_not_blank', 'MasterDataQualityDecision', 'targetType'),
('MasterDataQualityDecision_status_allowed', 'MasterDataQualityDecision', 'APPROVED_INCOMPLETE'),
('MasterDataQualityDecision_reason_not_blank', 'MasterDataQualityDecision', 'reason'),
('MasterDataQualityDecision_decidedBy_not_blank', 'MasterDataQualityDecision', 'decidedBy'),
('MasterDataQualityDecision_reason_not_placeholder', 'MasterDataQualityDecision', '待确认'),
('MasterDataQualityDecision_decidedBy_not_placeholder', 'MasterDataQualityDecision', '待确认'),
('MasterDataQualityDecision_resolvedBy_not_placeholder', 'MasterDataQualityDecision', '待确认'),
('MasterDataQualityDecision_resolved_state_valid', 'MasterDataQualityDecision', 'resolvedAt'),
('SpuNumberCounter_productCategory_not_blank', 'SpuNumberCounter', 'productCategory'),
('SpuNumberCounter_productCategory_normalized', 'SpuNumberCounter', 'btrim'),
('SpuNumberCounter_prefix_not_blank', 'SpuNumberCounter', 'prefix'),
('SpuNumberCounter_prefix_normalized', 'SpuNumberCounter', 'upper(btrim'),
('SpuNumberCounter_lastUsedIndex_non_negative', 'SpuNumberCounter', 'lastUsedIndex'),
('SpuNumberCounter_sourceLibraryItemId_normalized', 'SpuNumberCounter', 'sourceLibraryItemId'),
('ProductSKU_active_skuCode_not_deleted_marker', 'ProductSKU', '__deleted__'),
('ProductSKU_price_cost_stock_non_negative', 'ProductSKU', '"costPrice"'),
('ProductSKU_soft_delete_identity_valid', 'ProductSKU', 'originalSkuCode'),
('ProductSKU_no_soft_delete_lifecycle_attributes', 'ProductSKU', '_originalSkuCode'),
('ProductSKU_soft_delete_tombstone_valid', 'ProductSKU', 'deletedCodeAt'),
('ProductSKU_no_formal_truth_attributes', 'ProductSKU', 'skuName'),
('AssetSeries_code_normalized', 'AssetSeries', 'upper(btrim'),
('AssetSeries_identity_valid', 'AssetSeries', 'sortOrder'),
('AssetSeries_metadata_object', 'AssetSeries', 'jsonb_typeof'),
('AssetFamily_code_normalized', 'AssetFamily', 'upper(btrim'),
('AssetFamily_identity_valid', 'AssetFamily', 'connectionRoles'),
('AssetFamily_metadata_object', 'AssetFamily', 'jsonb_typeof'),
('AssetFamily_lifecycle_state_valid', 'AssetFamily', 'PENDING_REVIEW'),
('DraftGroup_code_normalized', 'DraftGroup', 'upper(btrim'),
('DraftGroup_identity_valid', 'DraftGroup', 'btrim'),
('DraftGroup_summary_object', 'DraftGroup', 'jsonb_typeof'),
('DraftGroup_optional_text_not_blank', 'DraftGroup', 'description'),
('IntakeReferenceLibraryItem_code_normalized', 'IntakeReferenceLibraryItem', 'upper(btrim'),
('IntakeReferenceLibraryItem_code_required', 'IntakeReferenceLibraryItem', 'NULLIF(btrim'),
('IntakeReferenceLibraryItem_libraryType_allowed', 'IntakeReferenceLibraryItem', 'PACKAGING_MATERIAL'),
('IntakeReferenceLibraryItem_itemKey_required', 'IntakeReferenceLibraryItem', 'btrim'),
('IntakeReferenceLibraryItem_letter_normalized', 'IntakeReferenceLibraryItem', 'upper(btrim'),
('IntakeReferenceLibraryItem_spu_rule_name_normalized', 'IntakeReferenceLibraryItem', 'SPU_RULE'),
('PlanningTemplate_code_normalized', 'PlanningTemplate', 'upper(btrim'),
('PlanningTemplate_name_not_blank', 'PlanningTemplate', 'name'),
('PlanningTemplate_slots_array', 'PlanningTemplate', 'jsonb_array_length'),
('PlanningTemplate_rules_object', 'PlanningTemplate', 'rules'),
('PlanningTemplate_optional_text_not_blank', 'PlanningTemplate', 'namePattern'),
('PlanningWorkspace_name_not_blank', 'PlanningWorkspace', 'name'),
('PlanningWorkspace_visibility_allowed', 'PlanningWorkspace', 'DEPARTMENT'),
('PlanningWorkspace_slotSelections_object', 'PlanningWorkspace', 'slotSelections'),
('PlanningWorkspace_metadata_object', 'PlanningWorkspace', 'metadata'),
('PlanningWorkspace_optional_text_not_blank', 'PlanningWorkspace', 'description'),
('PlanningDraft_identity_not_blank', 'PlanningDraft', 'selectedCandidateKey'),
('PlanningDraft_selectedAssets_object', 'PlanningDraft', 'selectedAssets'),
('PlanningDraft_previewNodes_array', 'PlanningDraft', 'previewNodes'),
('PlanningDraft_summary_array', 'PlanningDraft', 'summary'),
('PlanningDraft_warnings_array', 'PlanningDraft', 'warnings'),
('PlanningDraft_sourceSnapshot_object', 'PlanningDraft', 'sourceSnapshot'),
('PlanningDraft_optional_text_not_blank', 'PlanningDraft', 'notes'),
('Substrate_code_normalized', 'Substrate', 'upper(btrim'),
('WarehouseLocation_code_normalized', 'WarehouseLocation', 'upper(btrim'),
('PackagedItem_code_normalized', 'PackagedItem', 'upper(btrim'),
('PreSkuPackagingPlan_status_allowed', 'PreSkuPackagingPlan', 'CONFIRMED'),
('PreSkuPackagingPlan_boxes_array', 'PreSkuPackagingPlan', 'jsonb_typeof'),
('PreSkuPackagingPlan_costSummary_object', 'PreSkuPackagingPlan', 'costSummary'),
('PreSkuPackagingPlan_processDraft_object', 'PreSkuPackagingPlan', 'processDraft'),
('PreSkuPackagingPlan_optional_text_not_blank', 'PreSkuPackagingPlan', 'sourceRefId'),
('WarehouseLocation_name_not_blank', 'WarehouseLocation', 'name'),
('WarehouseLocation_optional_text_not_blank', 'WarehouseLocation', 'zone'),
('BrandMaterialBinding_materialType_allowed', 'BrandMaterialBinding', 'CARTON_PRINT'),
('BrandMaterialBinding_identity_not_blank', 'BrandMaterialBinding', 'materialType'),
('BrandMaterialBinding_file_metadata_consistent', 'BrandMaterialBinding', 'fileSize'),
('PackagedItem_status_allowed', 'PackagedItem', 'ACTIVE'),
('PackagedItem_name_not_blank', 'PackagedItem', 'name'),
('PackagedItem_quantities_valid', 'PackagedItem', 'stockQuantity'),
('PackagedItem_dimensions_valid', 'PackagedItem', 'weight'),
('PackagedItem_payload_object', 'PackagedItem', 'jsonb_typeof'),
('Material_code_normalized', 'Material', 'upper(btrim'),
('Hardware_code_normalized', 'Hardware', 'upper(btrim'),
('CommonComponent_code_normalized', 'CommonComponent', 'upper(btrim'),
('IntakeNonIntegratedProduct_spu_brand_normalized', 'IntakeNonIntegratedProduct', 'upper(btrim'),
('Product_modelNumber_normalized', 'Product', 'upper(btrim'),
('Product_name_not_blank', 'Product', 'name'),
('Product_visibility_allowed', 'Product', 'DEPARTMENT'),
('Product_optional_text_not_blank', 'Product', 'description'),
('ProductCollaborator_identity_not_blank', 'ProductCollaborator', 'productId'),
('ProductCollaborator_role_allowed', 'ProductCollaborator', 'viewer'),
('ProductCollaborator_addedBy_not_blank', 'ProductCollaborator', 'addedBy'),
('ShareLink_token_not_blank', 'ShareLink', 'token'),
('ShareLink_viewCount_non_negative', 'ShareLink', 'viewCount'),
('ShareLink_expiresAt_after_createdAt', 'ShareLink', 'expiresAt'),
('Panel_identity_dimensions_valid', 'Panel', 'gltfNodeName'),
('Panel_explosionDirection_allowed', 'Panel', 'explosionDirection'),
('Panel_assemblySemantic_object', 'Panel', 'assemblySemantic'),
('Panel_optional_text_not_blank', 'Panel', 'partType'),
('Hole_geometry_quality', 'Hole', 'normalX'),
('Hole_type_allowed', 'Hole', 'shelf_pin'),
('Hole_optional_text_not_blank', 'Hole', 'groupId'),
('ProductHardware_match_status_allowed', 'ProductHardware', 'unmatched'),
('ProductHardware_match_confidence_valid', 'ProductHardware', 'matchConfidence'),
('ProductHardware_match_method_allowed', 'ProductHardware', 'blockName'),
('ProductHardware_quantities_geometry_valid', 'ProductHardware', 'holeDistance'),
('ProductHardware_transform_object', 'ProductHardware', 'transform'),
('ProductHardware_sourceSignature_object', 'ProductHardware', 'sourceSignature'),
('ProductHardware_optional_text_not_blank', 'ProductHardware', 'sourceBlockName'),
('AssemblyStep_identity_order_valid', 'AssemblyStep', 'order'),
('AssemblyStep_type_allowed', 'AssemblyStep', 'hardware'),
('AssemblyStep_animation_valid', 'AssemblyStep', 'cameraTransition'),
('AssemblyStep_transform_object', 'AssemblyStep', 'transform'),
('AssemblyStep_cameraPosition_object', 'AssemblyStep', 'cameraPosition'),
('AssemblyStep_infoCardData_object', 'AssemblyStep', 'infoCardData'),
('AssemblyStep_optional_text_not_blank', 'AssemblyStep', 'description'),
('AssemblyVersion_snapshot_array', 'AssemblyVersion', 'snapshot'),
('AssemblyVersion_version_positive', 'AssemblyVersion', 'version'),
('AssemblyVersion_optional_text_not_blank', 'AssemblyVersion', 'createdBy'),
('ProductSKU_skuCode_normalized', 'ProductSKU', 'upper(btrim'),
('ProductSKU_active_skuCode_no_deleted_marker_ci', 'ProductSKU', 'lower'),
('AssetVariant_code_normalized', 'AssetVariant', 'upper(btrim'),
('AssetVariant_barcode_normalized', 'AssetVariant', 'upper(btrim'),
('AssetVariant_identity_valid', 'AssetVariant', 'identityKey'),
('AssetVariant_json_shape_valid', 'AssetVariant', 'mountPoints'),
('AssetVariant_cost_weight_valid', 'AssetVariant', 'estimatedCostPrice'),
('AssetVariant_lifecycle_state_valid', 'AssetVariant', 'PENDING_REVIEW'),
('AssetVariant_inheritance_not_self', 'AssetVariant', 'inheritedFromVariantId'),
('PreSku_identity_valid', 'PreSku', 'sourceCandidateKey'),
('PreSku_process_snapshots_shape_valid', 'PreSku', 'familySelection'),
('PreSku_weight_valid', 'PreSku', 'weightPreview'),
('PreSku_component_codes_valid', 'PreSku', 'componentCodes'),
('PreSku_optional_text_not_blank', 'PreSku', 'customName'),
('PreSkuBasicInfo_formalSkuCode_normalized', 'PreSkuBasicInfo', 'upper(btrim'),
('PreSkuBasicInfo_barcode_normalized', 'PreSkuBasicInfo', 'upper(btrim'),
('PreSkuBasicInfo_model_normalized', 'PreSkuBasicInfo', 'upper(btrim'),
('PreSkuBasicInfo_versionNo_normalized', 'PreSkuBasicInfo', 'upper(btrim'),
('PreSkuBasicInfo_attributeCode_normalized', 'PreSkuBasicInfo', 'upper(btrim'),
('PreSkuBasicInfo_drawingId_normalized', 'PreSkuBasicInfo', 'upper(btrim'),
('PreSkuBasicInfo_source_allowed', 'PreSkuBasicInfo', 'DRAFT_GROUP'),
('PreSkuBasicInfo_optional_text_not_blank', 'PreSkuBasicInfo', 'formalSkuCode'),
('AssetSkuSyncEvent_reason_allowed', 'AssetSkuSyncEvent', 'VARIANT_UPDATED'),
('AssetSkuSyncEvent_counts_non_negative', 'AssetSkuSyncEvent', 'retryCount'),
('AssetSkuSyncEvent_synced_not_over_affected', 'AssetSkuSyncEvent', 'syncedCount'),
('AssetSkuSyncEvent_completed_has_processed_at', 'AssetSkuSyncEvent', 'processedAt'),
('ProductSkuAssetProfile_barcode_normalized', 'ProductSkuAssetProfile', 'upper(btrim'),
('ProductSkuAssetProfile_model_normalized', 'ProductSkuAssetProfile', 'upper(btrim'),
('ProductSkuAssetProfile_specCode_normalized', 'ProductSkuAssetProfile', 'upper(btrim'),
('ProductSkuAssetProfile_primary_source_required', 'ProductSkuAssetProfile', 'primarySourceAssetVariantId'),
('ProductSkuAssetProfile_source_variant_ids_required', 'ProductSkuAssetProfile', 'sourceAssetVariantIds'),
('ProductSkuAssetProfile_primary_source_in_source_ids', 'ProductSkuAssetProfile', 'primarySourceAssetVariantId'),
('ProductSkuAssetProfile_optional_text_not_blank', 'ProductSkuAssetProfile', 'specCode'),
('ProductPatentRecord_patentGroupKey_normalized', 'ProductPatentRecord', 'upper(btrim'),
('ProductPatentRecord_productId_required', 'ProductPatentRecord', 'btrim'),
('ProductPatentRecord_applicationNo_normalized', 'ProductPatentRecord', 'upper(btrim'),
('ProductPatentRecord_patentNo_normalized', 'ProductPatentRecord', 'upper(btrim'),
('ProductPatentRecord_spu_normalized', 'ProductPatentRecord', 'upper(btrim'),
('ProductPatentRecord_patent_identity_required', 'ProductPatentRecord', 'patentName'),
('IntakeNonIntegratedSkuItem_skuCode_normalized', 'IntakeNonIntegratedSkuItem', 'upper(btrim'),
('IntakeNonIntegratedSkuItem_barcode_normalized', 'IntakeNonIntegratedSkuItem', 'upper(btrim'),
('ApprovalWorkflow_approvalNumber_normalized', 'ApprovalWorkflow', 'upper(btrim'),
('ApprovalWorkflow_title_not_blank', 'ApprovalWorkflow', 'title'),
('ApprovalWorkflow_productId_not_blank', 'ApprovalWorkflow', 'productId'),
('ApprovalWorkflow_accessKey_not_blank', 'ApprovalWorkflow', 'accessKey'),
('ApprovalWorkflow_participant_user_ids_valid', 'ApprovalWorkflow', 'text_array_distinct_non_blank'),
('ApprovalWorkflow_business_roles_distinct', 'ApprovalWorkflow', 'array_positions'),
('ApprovalWorkflow_fieldMatrix_array', 'ApprovalWorkflow', 'jsonb_typeof'),
('ApprovalWorkflow_summary_object', 'ApprovalWorkflow', 'jsonb_typeof'),
('ApprovalWorkflow_metadata_object', 'ApprovalWorkflow', 'jsonb_typeof'),
('ApprovalWorkflowFieldChange_fieldKey_not_blank', 'ApprovalWorkflowFieldChange', 'fieldKey'),
('ApprovalWorkflowFieldChange_source_not_blank', 'ApprovalWorkflowFieldChange', 'source'),
('ApprovalWorkflowFieldChange_optional_text_not_blank', 'ApprovalWorkflowFieldChange', 'sourcePage'),
('ApprovalWorkflowFieldChange_metadata_object', 'ApprovalWorkflowFieldChange', 'jsonb_typeof'),
('User_email_normalized', 'User', 'lower(btrim'),
('User_name_not_blank', 'User', 'btrim'),
('User_loginSource_not_blank', 'User', 'loginSource'),
('User_business_roles_distinct', 'User', 'array_positions'),
('User_optional_text_not_blank', 'User', 'dingtalkUserId'),
('Department_identity_not_blank', 'Department', 'fullPath'),
('Department_optional_text_not_blank', 'Department', 'externalId'),
('Department_orderIndex_non_negative', 'Department', 'orderIndex'),
('Team_identity_not_blank', 'Team', 'orderIndex'),
('EmployeeDirectory_name_not_blank', 'EmployeeDirectory', 'btrim'),
('EmployeeDirectory_optional_text_not_blank', 'EmployeeDirectory', 'primaryDepartmentExternalId'),
('EmployeeDirectory_email_normalized', 'EmployeeDirectory', 'lower(btrim'),
('EmployeeDirectory_departmentExternalIds_array', 'EmployeeDirectory', 'jsonb_typeof'),
('EmployeeDirectory_rawSnapshot_object', 'EmployeeDirectory', 'jsonb_typeof'),
('EmployeeLookupCache_identity_not_blank', 'EmployeeLookupCache', 'lookupValue'),
('EmployeeLookupCache_result_object', 'EmployeeLookupCache', 'jsonb_typeof'),
('ProductCategory_identity_valid', 'ProductCategory', 'sortOrder'),
('ProductCategory_optional_text_not_blank', 'ProductCategory', 'description'),
('MaterialCategory_identity_valid', 'MaterialCategory', 'sortOrder'),
('MaterialCategory_optional_text_not_blank', 'MaterialCategory', 'icon'),
('HardwareCategory_identity_valid', 'HardwareCategory', 'sortOrder'),
('HardwareCategory_optional_text_not_blank', 'HardwareCategory', 'description'),
('CommonComponentCategory_identity_valid', 'CommonComponentCategory', 'sortOrder'),
('CommonComponentCategory_optional_text_not_blank', 'CommonComponentCategory', 'description'),
('SubstrateCategory_identity_valid', 'SubstrateCategory', 'sortOrder'),
('SubstrateEnvironmentGrade_identity_valid', 'SubstrateEnvironmentGrade', 'sortOrder'),
('SubstrateSurfaceOption_identity_valid', 'SubstrateSurfaceOption', 'sortOrder'),
('SubstrateSystemNameOption_identity_valid', 'SubstrateSystemNameOption', 'sortOrder'),
('SubstrateThicknessSpec_identity_dimensions_valid', 'SubstrateThicknessSpec', 'thicknessMm'),
('HardwareMapping_match_key_exactly_one', 'HardwareMapping', 'signatureHash'),
('HardwareMapping_usage_source_valid', 'HardwareMapping', 'usageCount'),
('SubstrateFinish_relation_ids_not_blank', 'SubstrateFinish', 'substrateId'),
('PanelMaterial_relation_ids_not_blank', 'PanelMaterial', 'materialId'),
('AssetVariantLocationBinding_relation_ids_not_blank', 'AssetVariantLocationBinding', 'warehouseLocationId'),
('PreSkuLocationBinding_relation_ids_not_blank', 'PreSkuLocationBinding', 'warehouseLocationId'),
('PackagingPlan_identity_counts_valid', 'PackagingPlan', 'boxCount'),
('PackagingPlan_boxes_array', 'PackagingPlan', 'jsonb_typeof'),
('PackagingPlan_totals_valid', 'PackagingPlan', 'totalWeight'),
('PackagingPlan_optional_text_not_blank', 'PackagingPlan', 'description'),
('SystemConfig_key_valid', 'SystemConfig', 'btrim'),
('SystemConfig_description_not_blank', 'SystemConfig', 'description'),
('ProviderConfig_identity_valid', 'ProviderConfig', 'serviceType'),
('ProviderConfig_optional_fields_valid', 'ProviderConfig', 'jsonb_typeof'),
('ThemeConfig_identity_valid', 'ThemeConfig', 'createdBy'),
('ThemeConfig_optional_config_valid', 'ThemeConfig', 'homeBackground'),
('IntakeNodePermissionOverride_identity_valid', 'IntakeNodePermissionOverride', 'targetKey'),
('IntakeNodePermissionOverride_audit_text_not_blank', 'IntakeNodePermissionOverride', 'createdBy'),
('AssistedAssemblyAiRender_identity_valid', 'AssistedAssemblyAiRender', 'prompt'),
('AssistedAssemblyAiRender_json_shape_valid', 'AssistedAssemblyAiRender', 'workspaceSnapshot'),
('AssistedAssemblyAiRender_status_duration_valid', 'AssistedAssemblyAiRender', 'durationMs'),
('AssistedAssemblyAiRender_optional_text_not_blank', 'AssistedAssemblyAiRender', 'negativePrompt'),
('Feedback_identity_valid', 'Feedback', 'description'),
('Feedback_images_valid', 'Feedback', 'text_array_all_trimmed_non_blank'),
('Feedback_comments_array', 'Feedback', 'jsonb_typeof'),
('Feedback_resolution_state_valid', 'Feedback', 'resolvedAt'),
('ActivityLog_identity_valid', 'ActivityLog', 'action'),
('ActivityLog_target_pair_valid', 'ActivityLog', 'targetType'),
('ActivityLog_json_shape_valid', 'ActivityLog', 'metadata')
)
SELECT
'missing_required_check_constraint_guard' AS check_name,
guard.constraint_name,
guard.table_name,
pg_get_constraintdef(con.oid) AS actual_definition,
guard.expression_hint AS expected_expression_hint
FROM required_constraint_guards guard
LEFT JOIN pg_constraint con ON con.conname = guard.constraint_name
LEFT JOIN pg_class table_cls ON table_cls.oid = con.conrelid
LEFT JOIN pg_namespace ns ON ns.oid = table_cls.relnamespace
WHERE con.oid IS NULL
OR con.contype <> 'c'
OR ns.nspname <> 'public'
OR table_cls.relname <> guard.table_name
OR (
guard.expression_hint IS NOT NULL
AND COALESCE(pg_get_constraintdef(con.oid), '') NOT LIKE '%' || guard.expression_hint || '%'
)
ORDER BY guard.constraint_name;
SELECT
'missing_required_trigger_guard' AS check_name,
guard.trigger_name,
guard.table_name
FROM (
VALUES
('IntakeNonIntegratedProduct_soft_delete_cleanup_sku_items', 'IntakeNonIntegratedProduct'),
('ProductSKU_sync_asset_profile_deleted_at', 'ProductSKU')
) AS guard(trigger_name, table_name)
WHERE NOT EXISTS (
SELECT 1
FROM information_schema.triggers
WHERE trigger_schema = 'public'
AND trigger_name = guard.trigger_name
AND event_object_table = guard.table_name
);
SELECT
'asset_series_duplicate_code_risk' AS check_name,
code,
COUNT(*)::integer AS duplicate_count
FROM "AssetSeries"
WHERE NULLIF(btrim(code), '') IS NOT NULL
GROUP BY code
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, code;
SELECT
'asset_family_duplicate_code_risk' AS check_name,
code,
COUNT(*)::integer AS duplicate_count
FROM "AssetFamily"
WHERE NULLIF(btrim(code), '') IS NOT NULL
GROUP BY code
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, code;
SELECT
'asset_variant_duplicate_code_risk' AS check_name,
upper(btrim(code)) AS code,
COUNT(*)::integer AS duplicate_count
FROM "AssetVariant"
WHERE NULLIF(btrim(code), '') IS NOT NULL
GROUP BY upper(btrim(code))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, upper(btrim(code));
SELECT
'asset_variant_duplicate_barcode_risk' AS check_name,
upper(btrim(barcode)) AS barcode,
COUNT(*)::integer AS duplicate_count
FROM "AssetVariant"
WHERE NULLIF(btrim(barcode), '') IS NOT NULL
GROUP BY upper(btrim(barcode))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, upper(btrim(barcode));
SELECT
'product_duplicate_model_number_risk' AS check_name,
upper(btrim("modelNumber")) AS "modelNumber",
COUNT(*)::integer AS duplicate_count
FROM "Product"
WHERE NULLIF(btrim("modelNumber"), '') IS NOT NULL
GROUP BY upper(btrim("modelNumber"))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, upper(btrim("modelNumber"));
SELECT
'product_identity_visibility_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "Product"
WHERE NULLIF(btrim(name), '') IS NULL
OR name <> btrim(name)
OR visibility NOT IN ('PRIVATE', 'TEAM', 'DEPARTMENT', 'PUBLIC')
OR (description IS NOT NULL AND NULLIF(btrim(description), '') IS NULL);
SELECT
'product_collaborator_role_identity_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ProductCollaborator"
WHERE NULLIF(btrim("productId"), '') IS NULL
OR NULLIF(btrim("userId"), '') IS NULL
OR role NOT IN ('editor', 'viewer')
OR ("addedBy" IS NOT NULL AND NULLIF(btrim("addedBy"), '') IS NULL);
SELECT
'product_sku_price_cost_stock_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ProductSKU"
WHERE "price" < 0
OR ("costPrice" IS NOT NULL AND "costPrice" < 0)
OR "stock" < 0;
SELECT
'share_link_identity_counter_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ShareLink"
WHERE NULLIF(btrim(token), '') IS NULL
OR token <> btrim(token)
OR "viewCount" < 0
OR ("expiresAt" IS NOT NULL AND "expiresAt" <= "createdAt");
SELECT
'panel_identity_dimension_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "Panel"
WHERE NULLIF(btrim(code), '') IS NULL
OR code <> upper(btrim(code))
OR NULLIF(btrim(name), '') IS NULL
OR name <> btrim(name)
OR NULLIF(btrim("gltfNodeName"), '') IS NULL
OR "gltfNodeName" <> btrim("gltfNodeName")
OR length <= 0
OR width <= 0
OR thickness <= 0
OR COALESCE("installOrder", 0) < 0
OR ("partType" IS NOT NULL AND NULLIF(btrim("partType"), '') IS NULL)
OR ("explosionDirection" IS NOT NULL AND "explosionDirection" NOT IN ('auto', 'up', 'down', 'left', 'right', 'front', 'back'))
OR ("assemblySemantic" IS NOT NULL AND jsonb_typeof("assemblySemantic") NOT IN ('object', 'null'));
SELECT
'panel_duplicate_code_scope_risk' AS check_name,
"productId",
COALESCE("skuId", '') AS "skuScope",
upper(btrim(code)) AS code,
COUNT(*)::integer AS duplicate_count
FROM "Panel"
GROUP BY "productId", COALESCE("skuId", ''), upper(btrim(code))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, "productId", "skuScope", code;
SELECT
'hole_geometry_quality_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "Hole"
WHERE "positionX" IN ('Infinity'::float8, '-Infinity'::float8, 'NaN'::float8)
OR "positionY" IN ('Infinity'::float8, '-Infinity'::float8, 'NaN'::float8)
OR "positionZ" IN ('Infinity'::float8, '-Infinity'::float8, 'NaN'::float8)
OR diameter <= 0
OR depth < 0
OR "normalX" IN ('Infinity'::float8, '-Infinity'::float8, 'NaN'::float8)
OR "normalY" IN ('Infinity'::float8, '-Infinity'::float8, 'NaN'::float8)
OR "normalZ" IN ('Infinity'::float8, '-Infinity'::float8, 'NaN'::float8)
OR ("normalX" = 0 AND "normalY" = 0 AND "normalZ" = 0)
OR confidence < 0
OR confidence > 1
OR ("holeType" IS NOT NULL AND "holeType" NOT IN ('hinge', 'connector', 'shelf_pin', 'screw', 'dowel', 'cable', 'unknown'))
OR ("groupId" IS NOT NULL AND NULLIF(btrim("groupId"), '') IS NULL);
SELECT
'product_hardware_quality_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ProductHardware"
WHERE jsonb_typeof(transform) <> 'object'
OR "matchStatus" NOT IN ('matched', 'pending', 'unmatched')
OR ("matchConfidence" IS NOT NULL AND ("matchConfidence" < 0 OR "matchConfidence" > 1))
OR ("matchMethod" IS NOT NULL AND "matchMethod" NOT IN ('blockName', 'mapping', 'size', 'manual'))
OR ("installOrder" IS NOT NULL AND "installOrder" < 0)
OR ("holeDistance" IS NOT NULL AND "holeDistance" < 0)
OR ("sourceSignature" IS NOT NULL AND jsonb_typeof("sourceSignature") NOT IN ('object', 'null'))
OR ("sourceBlockName" IS NOT NULL AND NULLIF(btrim("sourceBlockName"), '') IS NULL)
OR (notes IS NOT NULL AND NULLIF(btrim(notes), '') IS NULL)
OR ("panelId" IS NOT NULL AND NULLIF(btrim("panelId"), '') IS NULL)
OR ("connectedPanelId" IS NOT NULL AND NULLIF(btrim("connectedPanelId"), '') IS NULL)
OR ("associatedHoleId" IS NOT NULL AND NULLIF(btrim("associatedHoleId"), '') IS NULL)
OR ("parentHardwareId" IS NOT NULL AND NULLIF(btrim("parentHardwareId"), '') IS NULL);
SELECT
'assembly_step_quality_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "AssemblyStep"
WHERE "order" < 0
OR NULLIF(btrim(title), '') IS NULL
OR title <> btrim(title)
OR "stepType" NOT IN ('panel', 'hardware', 'custom')
OR duration <= 0
OR NULLIF(btrim(easing), '') IS NULL
OR "cameraTransition" NOT IN ('smooth', 'cut', 'orbit')
OR jsonb_typeof(transform) <> 'object'
OR ("cameraPosition" IS NOT NULL AND jsonb_typeof("cameraPosition") NOT IN ('object', 'null'))
OR ("infoCardData" IS NOT NULL AND jsonb_typeof("infoCardData") NOT IN ('object', 'null'))
OR (description IS NOT NULL AND NULLIF(btrim(description), '') IS NULL)
OR ("panelId" IS NOT NULL AND NULLIF(btrim("panelId"), '') IS NULL)
OR EXISTS (SELECT 1 FROM unnest("hardwareIds") AS item WHERE NULLIF(btrim(item), '') IS NULL)
OR cardinality("hardwareIds") <> (SELECT COUNT(DISTINCT btrim(item))::integer FROM unnest("hardwareIds") AS item)
OR EXISTS (SELECT 1 FROM unnest("partIds") AS item WHERE NULLIF(btrim(item), '') IS NULL)
OR cardinality("partIds") <> (SELECT COUNT(DISTINCT btrim(item))::integer FROM unnest("partIds") AS item);
SELECT
'assembly_version_snapshot_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "AssemblyVersion"
WHERE version <= 0
OR jsonb_typeof(snapshot) <> 'array'
OR (description IS NOT NULL AND NULLIF(btrim(description), '') IS NULL)
OR ("createdBy" IS NOT NULL AND NULLIF(btrim("createdBy"), '') IS NULL);
SELECT
'product_sku_duplicate_sku_code_risk' AS check_name,
upper(btrim("skuCode")) AS "skuCode",
COUNT(*)::integer AS duplicate_count
FROM "ProductSKU"
WHERE "deletedAt" IS NULL
AND NULLIF(btrim("skuCode"), '') IS NOT NULL
GROUP BY upper(btrim("skuCode"))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, upper(btrim("skuCode"));
SELECT
'product_sku_missing_name_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ProductSKU" sku
JOIN "Product" product ON product."id" = sku."productId"
WHERE sku."deletedAt" IS NULL
AND product."deletedAt" IS NULL
AND NULLIF(btrim(COALESCE(sku."name", '')), '') IS NULL;
SELECT
'product_sku_formal_truth_attribute_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ProductSKU"
WHERE attributes ?| ARRAY[
'skuName',
'model',
'specCode',
'barcode',
'category',
'color',
'material',
'size'
];
SELECT
'draft_group_duplicate_code_risk' AS check_name,
code,
COUNT(*)::integer AS duplicate_count
FROM "DraftGroup"
WHERE NULLIF(btrim(code), '') IS NOT NULL
GROUP BY code
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, code;
SELECT
'draft_group_invalid_process_shape_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "DraftGroup"
WHERE NULLIF(btrim(code), '') IS NULL
OR code <> btrim(code)
OR NULLIF(btrim(name), '') IS NULL
OR name <> btrim(name)
OR jsonb_typeof(summary::jsonb) <> 'object'
OR (description IS NOT NULL AND NULLIF(btrim(description), '') IS NULL)
OR (notes IS NOT NULL AND NULLIF(btrim(notes), '') IS NULL);
SELECT
'pre_sku_duplicate_per_group_risk' AS check_name,
"draftGroupId",
sequence,
COUNT(*)::integer AS duplicate_count
FROM "PreSku"
GROUP BY "draftGroupId", sequence
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, "draftGroupId", sequence;
SELECT
'pre_sku_invalid_process_shape_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "PreSku"
WHERE sequence <= 0
OR NULLIF(btrim("defaultName"), '') IS NULL
OR "defaultName" <> btrim("defaultName")
OR NULLIF(btrim("sourceCandidateKey"), '') IS NULL
OR "sourceCandidateKey" <> btrim("sourceCandidateKey")
OR jsonb_typeof("familySelection"::jsonb) <> 'object'
OR jsonb_typeof("variantSelection"::jsonb) <> 'object'
OR jsonb_typeof("previewNodes"::jsonb) <> 'array'
OR jsonb_typeof("displaySummary"::jsonb) <> 'object'
OR jsonb_typeof("bomPreview"::jsonb) <> 'array'
OR (
"recommendedHardware" IS NOT NULL
AND jsonb_typeof("recommendedHardware"::jsonb) NOT IN ('array', 'null')
)
OR (
"explosionPreview" IS NOT NULL
AND jsonb_typeof("explosionPreview"::jsonb) NOT IN ('array', 'null')
)
OR jsonb_typeof("installStepPreview"::jsonb) <> 'array'
OR (
"packagingSnapshot" IS NOT NULL
AND jsonb_typeof("packagingSnapshot"::jsonb) NOT IN ('object', 'null')
)
OR ("weightPreview" IS NOT NULL AND "weightPreview" < 0)
OR EXISTS (
SELECT 1
FROM unnest("componentCodes") AS item
WHERE NULLIF(btrim(item), '') IS NULL
)
OR ("customName" IS NOT NULL AND NULLIF(btrim("customName"), '') IS NULL)
OR (notes IS NOT NULL AND NULLIF(btrim(notes), '') IS NULL);
SELECT
'pre_sku_formalization_lifecycle_mismatch_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM (
SELECT pre_sku."id"
FROM "PreSku" pre_sku
LEFT JOIN "ProductSKU" sku ON sku."sourcePreSkuId" = pre_sku."id"
WHERE pre_sku.status = 'FORMALIZED'::"PreSkuStatus"
AND sku."id" IS NULL
UNION ALL
SELECT pre_sku."id"
FROM "ProductSKU" sku
JOIN "PreSku" pre_sku ON pre_sku."id" = sku."sourcePreSkuId"
WHERE sku."deletedAt" IS NULL
AND pre_sku.status <> 'FORMALIZED'::"PreSkuStatus"
) mismatches;
SELECT
'asset_family_without_series_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "AssetFamily"
WHERE "assetSeriesId" IS NULL;
SELECT
'asset_variant_without_model_url_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "AssetVariant"
WHERE NULLIF(btrim("modelUrl"), '') IS NULL;
SELECT
'product_sku_without_asset_profile_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ProductSKU" sku
JOIN "Product" product ON product."id" = sku."productId"
LEFT JOIN "ProductSkuAssetProfile" profile ON profile."skuId" = sku."id"
WHERE sku."deletedAt" IS NULL
AND product."deletedAt" IS NULL
AND jsonb_typeof(sku.attributes::jsonb -> 'assetSkuSnapshot') = 'object'
AND profile."id" IS NULL;
SELECT
'product_sku_asset_profile_snapshot_sync_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ProductSKU" sku
JOIN "Product" product ON product."id" = sku."productId"
JOIN "ProductSkuAssetProfile" profile ON profile."skuId" = sku."id"
WHERE sku."deletedAt" IS NULL
AND product."deletedAt" IS NULL
AND jsonb_typeof(sku.attributes::jsonb -> 'assetSkuSnapshot') = 'object'
AND (
COALESCE(profile."model", '') IS DISTINCT FROM COALESCE(sku.attributes::jsonb -> 'assetSkuSnapshot' ->> 'model', '')
OR COALESCE(profile."specCode", '') IS DISTINCT FROM COALESCE(sku.attributes::jsonb -> 'assetSkuSnapshot' ->> 'specCode', '')
OR COALESCE(profile."barcode", '') IS DISTINCT FROM COALESCE(sku.attributes::jsonb -> 'assetSkuSnapshot' ->> 'barcode', '')
OR COALESCE(profile."imageUrl", '') IS DISTINCT FROM COALESCE(sku.attributes::jsonb -> 'assetSkuSnapshot' ->> 'imageUrl', '')
);
SELECT
'product_sku_profile_duplicate_barcode_risk' AS check_name,
upper(btrim(profile."barcode")) AS barcode,
COUNT(*)::integer AS duplicate_count
FROM "ProductSkuAssetProfile" profile
JOIN "ProductSKU" sku ON sku."id" = profile."skuId"
JOIN "Product" product ON product."id" = sku."productId"
WHERE sku."deletedAt" IS NULL
AND product."deletedAt" IS NULL
AND profile."sourceStatus" = 'ACTIVE'
AND NULLIF(btrim(COALESCE(profile."barcode", '')), '') IS NOT NULL
GROUP BY upper(btrim(profile."barcode"))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, barcode;
SELECT
'product_sku_asset_profile_source_id_mismatch_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "ProductSKU" sku
JOIN "Product" product ON product."id" = sku."productId"
JOIN "ProductSkuAssetProfile" profile ON profile."skuId" = sku."id"
WHERE sku."deletedAt" IS NULL
AND product."deletedAt" IS NULL
AND NULLIF(btrim(COALESCE(sku."sourceAssetVariantId", '')), '') IS NOT NULL
AND NULLIF(btrim(COALESCE(profile."primarySourceAssetVariantId", '')), '') IS NOT NULL
AND sku."sourceAssetVariantId" IS DISTINCT FROM profile."primarySourceAssetVariantId";
SELECT
'pre_sku_missing_truth_snapshot_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "PreSku"
WHERE "familySelection" IS NULL
OR "variantSelection" IS NULL
OR "displaySummary" IS NULL
OR "bomPreview" IS NULL;
SELECT
'pre_sku_missing_basic_info_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "PreSku" pre_sku
LEFT JOIN "PreSkuBasicInfo" basic_info ON basic_info."preSkuId" = pre_sku."id"
WHERE basic_info."id" IS NULL
AND (
NULLIF(btrim(COALESCE(pre_sku."displaySummary"::jsonb ->> 'model', pre_sku."familySelection"::jsonb ->> 'model', '')), '') IS NOT NULL
OR NULLIF(btrim(COALESCE(pre_sku."displaySummary"::jsonb ->> 'formalSkuCode', pre_sku."familySelection"::jsonb ->> 'formalSkuCode', '')), '') IS NOT NULL
OR NULLIF(btrim(COALESCE(pre_sku."displaySummary"::jsonb ->> 'barcode', pre_sku."familySelection"::jsonb ->> 'barcode', '')), '') IS NOT NULL
OR NULLIF(btrim(COALESCE(pre_sku."displaySummary"::jsonb ->> 'specName', pre_sku."familySelection"::jsonb ->> 'specName', '')), '') IS NOT NULL
);
SELECT
'pre_sku_basic_info_snapshot_sync_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "PreSku" pre_sku
JOIN "PreSkuBasicInfo" basic_info ON basic_info."preSkuId" = pre_sku."id"
WHERE COALESCE(basic_info."model", '') IS DISTINCT FROM COALESCE(NULLIF(btrim(COALESCE(pre_sku."displaySummary"::jsonb ->> 'model', pre_sku."familySelection"::jsonb ->> 'model', '')), ''), '')
OR COALESCE(basic_info."formalSkuCode", '') IS DISTINCT FROM COALESCE(NULLIF(btrim(COALESCE(pre_sku."displaySummary"::jsonb ->> 'formalSkuCode', pre_sku."familySelection"::jsonb ->> 'formalSkuCode', '')), ''), '')
OR COALESCE(basic_info."barcode", '') IS DISTINCT FROM COALESCE(NULLIF(btrim(COALESCE(pre_sku."displaySummary"::jsonb ->> 'barcode', pre_sku."familySelection"::jsonb ->> 'barcode', '')), ''), '')
OR COALESCE(basic_info."specName", '') IS DISTINCT FROM COALESCE(NULLIF(btrim(COALESCE(pre_sku."displaySummary"::jsonb ->> 'specName', pre_sku."familySelection"::jsonb ->> 'specName', '')), ''), '');
SELECT
'pre_sku_duplicate_formal_sku_code_risk' AS check_name,
upper(btrim(basic_info."formalSkuCode")) AS "formalSkuCode",
COUNT(*)::integer AS duplicate_count
FROM "PreSkuBasicInfo" basic_info
JOIN "PreSku" pre_sku ON pre_sku."id" = basic_info."preSkuId"
WHERE pre_sku."status" <> 'ARCHIVED'
AND NULLIF(btrim(basic_info."formalSkuCode"), '') IS NOT NULL
GROUP BY upper(btrim(basic_info."formalSkuCode"))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, upper(btrim(basic_info."formalSkuCode"));
SELECT
'pre_sku_duplicate_barcode_risk' AS check_name,
upper(btrim(basic_info."barcode")) AS "barcode",
COUNT(*)::integer AS duplicate_count
FROM "PreSkuBasicInfo" basic_info
JOIN "PreSku" pre_sku ON pre_sku."id" = basic_info."preSkuId"
WHERE pre_sku."status" <> 'ARCHIVED'
AND NULLIF(btrim(basic_info."barcode"), '') IS NOT NULL
GROUP BY upper(btrim(basic_info."barcode"))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, upper(btrim(basic_info."barcode"));
SELECT
'intake_non_integrated_missing_product_profile_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "IntakeNonIntegratedProduct" product
LEFT JOIN "IntakeNonIntegratedProductProfile" profile ON profile."productId" = product."id"
WHERE product."deletedAt" IS NULL
AND profile."id" IS NULL;
SELECT
'intake_non_integrated_product_profile_quality_risk' AS check_name,
COUNT(*) FILTER (WHERE NULLIF(btrim(profile."productName"), '') IS NULL)::integer AS missing_product_name_count,
COUNT(*) FILTER (WHERE NULLIF(btrim(profile."productCategory"), '') IS NULL)::integer AS missing_product_category_count,
COUNT(*) FILTER (WHERE NULLIF(btrim(profile."productDevelopmentKind"), '') IS NULL)::integer AS missing_development_kind_count
FROM "IntakeNonIntegratedProduct" product
JOIN "IntakeNonIntegratedProductProfile" profile ON profile."productId" = product."id"
WHERE product."deletedAt" IS NULL;
SELECT
'intake_non_integrated_product_profile_quality_sample' AS check_name,
product."id",
product."spu",
profile."productName",
profile."productCategory",
profile."productDevelopmentKind",
ARRAY_REMOVE(ARRAY[
CASE WHEN NULLIF(btrim(profile."productName"), '') IS NULL THEN 'productName' END,
CASE WHEN NULLIF(btrim(profile."productCategory"), '') IS NULL THEN 'productCategory' END,
CASE WHEN NULLIF(btrim(profile."productDevelopmentKind"), '') IS NULL THEN 'productDevelopmentKind' END
], NULL) AS "missingFields"
FROM "IntakeNonIntegratedProduct" product
JOIN "IntakeNonIntegratedProductProfile" profile ON profile."productId" = product."id"
WHERE product."deletedAt" IS NULL
AND (
NULLIF(btrim(profile."productName"), '') IS NULL
OR NULLIF(btrim(profile."productCategory"), '') IS NULL
OR NULLIF(btrim(profile."productDevelopmentKind"), '') IS NULL
)
ORDER BY product."spu", product."id"
LIMIT 20;
WITH payload_profile AS (
SELECT
product."id" AS product_id,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'productName'), ''), NULLIF(btrim(product."payload"::jsonb ->> 'previewImageName'), ''), NULLIF(btrim(product."payload"::jsonb ->> 'spu'), ''), '') AS product_name,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'productImage'), ''), NULLIF(btrim(product."payload"::jsonb ->> 'previewImage'), ''), '') AS product_image_url,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'productCategory'), ''), NULLIF(btrim(product."payload"::jsonb ->> 'productCategory'), ''), '') AS product_category,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'salesCategory'), ''), NULLIF(btrim(product."payload"::jsonb ->> 'salesCategory'), ''), '') AS sales_category,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'year'), ''), NULLIF(btrim(product."payload"::jsonb ->> 'year'), ''), '') AS product_year,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'currentStage'), ''), NULLIF(btrim(product."payload"::jsonb ->> 'projectStatus'), ''), '') AS product_status,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'productDevelopmentKind'), ''), '') AS product_development_kind,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'goodsType'), ''), '') AS goods_type,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'materialType'), ''), '') AS material_type,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'productionType'), ''), '') AS production_type,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'size'), ''), NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'size'), ''), '') AS size,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'color'), ''), '') AS color,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'tagMaterial'), ''), '') AS tag_material,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'priceBand'), ''), NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'targetPriceBand'), ''), '') AS price_band,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'demandFlowNo'), ''), '') AS demand_flow_no,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'processTemplate'), ''), '') AS process_template,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'productPlanning'), ''), NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'planningOwner'), ''), '') AS product_planning,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'brandPlanning'), ''), '') AS brand_planning,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'demandDepartment'), ''), '') AS demand_department,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'spuOwner'), ''), '') AS spu_owner,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'operationsOwner'), ''), '') AS operations_owner,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'purchaseOwner'), ''), NULLIF(btrim(product."payload"::jsonb ->> 'purchaser'), ''), '') AS purchase_owner,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'visualDirector'), ''), '') AS visual_director,
COALESCE(NULLIF(btrim(product."payload"::jsonb ->> 'visualPlanning'), ''), '') AS visual_planning,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'openingReference' ->> 'structureDesigner'), ''), '') AS structure_designer
FROM "IntakeNonIntegratedProduct" product
WHERE product."deletedAt" IS NULL
)
SELECT
'intake_non_integrated_product_profile_payload_sync_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM payload_profile payload
JOIN "IntakeNonIntegratedProductProfile" profile ON profile."productId" = payload.product_id
WHERE COALESCE(profile."productName", '') IS DISTINCT FROM payload.product_name
OR COALESCE(profile."productImageUrl", '') IS DISTINCT FROM payload.product_image_url
OR COALESCE(profile."productCategory", '') IS DISTINCT FROM payload.product_category
OR COALESCE(profile."salesCategory", '') IS DISTINCT FROM payload.sales_category
OR COALESCE(profile."productYear", '') IS DISTINCT FROM payload.product_year
OR COALESCE(profile."productStatus", '') IS DISTINCT FROM payload.product_status
OR COALESCE(profile."productDevelopmentKind", '') IS DISTINCT FROM payload.product_development_kind
OR COALESCE(profile."goodsType", '') IS DISTINCT FROM payload.goods_type
OR COALESCE(profile."materialType", '') IS DISTINCT FROM payload.material_type
OR COALESCE(profile."productionType", '') IS DISTINCT FROM payload.production_type
OR COALESCE(profile."size", '') IS DISTINCT FROM payload.size
OR COALESCE(profile."color", '') IS DISTINCT FROM payload.color
OR COALESCE(profile."tagMaterial", '') IS DISTINCT FROM payload.tag_material
OR COALESCE(profile."priceBand", '') IS DISTINCT FROM payload.price_band
OR COALESCE(profile."demandFlowNo", '') IS DISTINCT FROM payload.demand_flow_no
OR COALESCE(profile."processTemplate", '') IS DISTINCT FROM payload.process_template
OR COALESCE(profile."productPlanning", '') IS DISTINCT FROM payload.product_planning
OR COALESCE(profile."brandPlanning", '') IS DISTINCT FROM payload.brand_planning
OR COALESCE(profile."demandDepartment", '') IS DISTINCT FROM payload.demand_department
OR COALESCE(profile."spuOwner", '') IS DISTINCT FROM payload.spu_owner
OR COALESCE(profile."operationsOwner", '') IS DISTINCT FROM payload.operations_owner
OR COALESCE(profile."purchaseOwner", '') IS DISTINCT FROM payload.purchase_owner
OR COALESCE(profile."visualDirector", '') IS DISTINCT FROM payload.visual_director
OR COALESCE(profile."visualPlanning", '') IS DISTINCT FROM payload.visual_planning
OR COALESCE(profile."structureDesigner", '') IS DISTINCT FROM payload.structure_designer;
WITH payload_stock_source AS (
SELECT
product."id" AS product_id,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'metadata' ->> 'sourceSpu'), ''), '') AS source_spu,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'metadata' ->> 'sourceSkuId'), ''), '') AS source_sku_id,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'metadata' ->> 'sourceCategory'), ''), '') AS source_category,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'metadata' ->> 'sourceItemType'), ''), '') AS source_item_type,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'metadata' ->> 'sourceSalesStatus'), ''), '') AS source_sales_status,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'metadata' ->> 'sourceEnabled'), ''), '') AS source_enabled,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'metadata' ->> 'sourceStockDisabled'), ''), '') AS source_stock_disabled,
CASE
WHEN jsonb_typeof(product."payload"::jsonb -> 'skuItems') = 'array'
THEN jsonb_array_length(product."payload"::jsonb -> 'skuItems')
ELSE 0
END AS stock_sku_count,
COALESCE(NULLIF(btrim(product."payload"::jsonb -> 'metadata' ->> 'sourceSalesStatus'), ''), '') = '销售' AS stock_has_on_sale_sku
FROM "IntakeNonIntegratedProduct" product
WHERE product."deletedAt" IS NULL
)
SELECT
'intake_non_integrated_stock_source_profile_sync_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM payload_stock_source payload
JOIN "IntakeNonIntegratedProductProfile" profile ON profile."productId" = payload.product_id
WHERE COALESCE(profile."sourceSpu", '') IS DISTINCT FROM payload.source_spu
OR COALESCE(profile."sourceSkuId", '') IS DISTINCT FROM payload.source_sku_id
OR COALESCE(profile."sourceCategory", '') IS DISTINCT FROM payload.source_category
OR COALESCE(profile."sourceItemType", '') IS DISTINCT FROM payload.source_item_type
OR COALESCE(profile."sourceSalesStatus", '') IS DISTINCT FROM payload.source_sales_status
OR COALESCE(profile."sourceEnabled", '') IS DISTINCT FROM payload.source_enabled
OR COALESCE(profile."sourceStockDisabled", '') IS DISTINCT FROM payload.source_stock_disabled
OR COALESCE(profile."stockSkuCount", 0) IS DISTINCT FROM payload.stock_sku_count
OR COALESCE(profile."stockHasOnSaleSku", false) IS DISTINCT FROM payload.stock_has_on_sale_sku;
SELECT
'intake_non_integrated_duplicate_sku_code_risk' AS check_name,
upper(btrim(sku."skuCode")) AS "skuCode",
COUNT(*)::integer AS duplicate_count
FROM "IntakeNonIntegratedSkuItem" sku
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
WHERE product."deletedAt" IS NULL
AND sku."dataQualityStatus" = 'READY'
AND NULLIF(btrim(sku."skuCode"), '') IS NOT NULL
GROUP BY upper(btrim(sku."skuCode"))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, upper(btrim(sku."skuCode"));
SELECT
'intake_non_integrated_duplicate_barcode_risk' AS check_name,
upper(btrim(sku."barcode")) AS "barcode",
COUNT(*)::integer AS duplicate_count
FROM "IntakeNonIntegratedSkuItem" sku
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
WHERE product."deletedAt" IS NULL
AND sku."dataQualityStatus" = 'READY'
AND NULLIF(btrim(sku."barcode"), '') IS NOT NULL
GROUP BY upper(btrim(sku."barcode"))
HAVING COUNT(*) > 1
ORDER BY duplicate_count DESC, upper(btrim(sku."barcode"));
SELECT
'intake_non_integrated_conflict_sku_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "IntakeNonIntegratedSkuItem" sku
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
WHERE product."deletedAt" IS NULL
AND sku."dataQualityStatus" = 'CONFLICT';
SELECT
'intake_non_integrated_incomplete_sku_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "IntakeNonIntegratedSkuItem" sku
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
WHERE product."deletedAt" IS NULL
AND sku."dataQualityStatus" = 'INCOMPLETE';
SELECT
'intake_non_integrated_incomplete_sku_sample' AS check_name,
sku."id",
sku."productId",
product."spu",
sku."skuItemId",
sku."skuCode",
sku."specName",
sku."model",
sku."barcode",
sku."missingRequiredFields"
FROM "IntakeNonIntegratedSkuItem" sku
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
WHERE product."deletedAt" IS NULL
AND sku."dataQualityStatus" = 'INCOMPLETE'
ORDER BY product."spu", sku."sortOrder", sku."id"
LIMIT 20;
SELECT
'approval_workflow_identity_quality_risk' AS check_name,
COUNT(*)::integer AS total_count,
COUNT(*) FILTER (
WHERE NULLIF(btrim("approvalNumber"), '') IS NULL
OR "approvalNumber" <> upper(btrim("approvalNumber"))
)::integer AS invalid_approval_number_count,
COUNT(*) FILTER (WHERE NULLIF(btrim("title"), '') IS NULL)::integer AS missing_title_count,
COUNT(*) FILTER (WHERE NULLIF(btrim("productId"), '') IS NULL)::integer AS missing_product_id_count,
COUNT(*) FILTER (WHERE NULLIF(btrim("accessKey"), '') IS NULL)::integer AS missing_access_key_count,
COUNT(*) FILTER (
WHERE EXISTS (
SELECT 1
FROM unnest("participantUserIds") AS participant_id
WHERE NULLIF(btrim(participant_id), '') IS NULL
)
OR cardinality("participantUserIds") <> (
SELECT COUNT(DISTINCT participant_id)::integer
FROM unnest("participantUserIds") AS participant_id
)
)::integer AS invalid_participant_user_ids_count
FROM "ApprovalWorkflow";
SELECT
'approval_workflow_json_shape_risk' AS check_name,
COUNT(*) FILTER (
WHERE "fieldMatrix" IS NOT NULL AND jsonb_typeof("fieldMatrix") NOT IN ('array', 'null')
)::integer AS invalid_field_matrix_count,
COUNT(*) FILTER (
WHERE "summary" IS NOT NULL AND jsonb_typeof("summary") NOT IN ('object', 'null')
)::integer AS invalid_summary_count,
COUNT(*) FILTER (
WHERE "metadata" IS NOT NULL AND jsonb_typeof("metadata") NOT IN ('object', 'null')
)::integer AS invalid_metadata_count
FROM "ApprovalWorkflow";
SELECT
'approval_workflow_field_change_quality_risk' AS check_name,
COUNT(*)::integer AS total_count,
COUNT(*) FILTER (WHERE NULLIF(btrim("fieldKey"), '') IS NULL)::integer AS missing_field_key_count,
COUNT(*) FILTER (WHERE NULLIF(btrim("source"), '') IS NULL)::integer AS missing_source_count,
COUNT(*) FILTER (
WHERE "sourcePage" IS NOT NULL AND NULLIF(btrim("sourcePage"), '') IS NULL
)::integer AS blank_source_page_count,
COUNT(*) FILTER (
WHERE "metadata" IS NOT NULL AND jsonb_typeof("metadata") NOT IN ('object', 'null')
)::integer AS invalid_metadata_count
FROM "ApprovalWorkflowFieldChange";
SELECT
'product_patent_record_quality_risk' AS check_name,
COUNT(*)::integer AS total_count,
COUNT(*) FILTER (WHERE NULLIF(btrim("productId"), '') IS NULL)::integer AS missing_product_id_count,
COUNT(*) FILTER (WHERE NULLIF(btrim("patentGroupKey"), '') IS NULL)::integer AS missing_group_key_count,
COUNT(*) FILTER (
WHERE NULLIF(btrim("patentName"), '') IS NULL
AND NULLIF(btrim("patentNo"), '') IS NULL
AND NULLIF(btrim("applicationNo"), '') IS NULL
)::integer AS missing_patent_identity_count
FROM "ProductPatentRecord";
WITH payload_sku_items AS (
SELECT
p."id" AS product_id,
item.sku_item,
item.ordinality::integer AS sort_order,
COALESCE(NULLIF(btrim(item.sku_item ->> 'id'), ''), 'sku-' || item.ordinality::text) AS raw_sku_item_id
FROM "IntakeNonIntegratedProduct" p
CROSS JOIN LATERAL jsonb_array_elements(
CASE
WHEN jsonb_typeof(p."payload"::jsonb -> 'skuItems') = 'array'
THEN p."payload"::jsonb -> 'skuItems'
ELSE '[]'::jsonb
END
) WITH ORDINALITY AS item(sku_item, ordinality)
WHERE p."deletedAt" IS NULL
),
deduped_payload_sku_items AS (
SELECT
payload_sku_items.*,
CASE
WHEN COUNT(*) OVER (PARTITION BY product_id, raw_sku_item_id) = 1
THEN raw_sku_item_id
ELSE raw_sku_item_id || '-' || ROW_NUMBER() OVER (
PARTITION BY product_id, raw_sku_item_id
ORDER BY sort_order
)::text
END AS sku_item_id
FROM payload_sku_items
),
payload_snapshot AS (
SELECT
product_id,
sku_item_id,
sort_order,
COALESCE(sku_item ->> 'skuCode', '') AS sku_code,
COALESCE(sku_item ->> 'specName', '') AS spec_name,
COALESCE(sku_item ->> 'model', '') AS model,
COALESCE(sku_item ->> 'barcode', '') AS barcode
FROM deduped_payload_sku_items
),
structured_snapshot AS (
SELECT
sku."productId" AS product_id,
sku."skuItemId" AS sku_item_id,
sku."sortOrder" AS sort_order,
sku."skuCode" AS sku_code,
sku."specName" AS spec_name,
sku."model" AS model,
sku."barcode" AS barcode
FROM "IntakeNonIntegratedSkuItem" sku
JOIN "IntakeNonIntegratedProduct" product ON product."id" = sku."productId"
WHERE product."deletedAt" IS NULL
)
SELECT
'intake_non_integrated_sku_payload_sync_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM payload_snapshot payload
FULL JOIN structured_snapshot structured
ON structured.product_id = payload.product_id
AND structured.sku_item_id = payload.sku_item_id
WHERE payload.product_id IS NULL
OR structured.product_id IS NULL
OR payload.sort_order IS DISTINCT FROM structured.sort_order
OR payload.sku_code IS DISTINCT FROM structured.sku_code
OR payload.spec_name IS DISTINCT FROM structured.spec_name
OR payload.model IS DISTINCT FROM structured.model
OR payload.barcode IS DISTINCT FROM structured.barcode;
WITH reference_option_rows AS (
SELECT 'ProductCategory' AS table_name, name, "sortOrder", description, icon FROM "ProductCategory"
UNION ALL SELECT 'MaterialCategory', name, "sortOrder", NULL::text AS description, icon FROM "MaterialCategory"
UNION ALL SELECT 'HardwareCategory', name, "sortOrder", description, icon FROM "HardwareCategory"
UNION ALL SELECT 'CommonComponentCategory', name, "sortOrder", description, icon FROM "CommonComponentCategory"
UNION ALL SELECT 'SubstrateCategory', name, "sortOrder", NULL::text AS description, NULL::text AS icon FROM "SubstrateCategory"
UNION ALL SELECT 'SubstrateEnvironmentGrade', name, "sortOrder", NULL::text AS description, NULL::text AS icon FROM "SubstrateEnvironmentGrade"
UNION ALL SELECT 'SubstrateSurfaceOption', name, "sortOrder", NULL::text AS description, NULL::text AS icon FROM "SubstrateSurfaceOption"
UNION ALL SELECT 'SubstrateSystemNameOption', name, "sortOrder", NULL::text AS description, NULL::text AS icon FROM "SubstrateSystemNameOption"
),
duplicate_reference_option_names AS (
SELECT table_name, lower(btrim(name)) AS normalized_name
FROM reference_option_rows
GROUP BY table_name, lower(btrim(name))
HAVING COUNT(*) > 1
)
SELECT
'reference_option_quality_risk' AS check_name,
COUNT(*)::integer AS identity_risk_count,
(SELECT COUNT(*)::integer FROM duplicate_reference_option_names) AS duplicate_normalized_name_count
FROM reference_option_rows
WHERE NULLIF(btrim(name), '') IS NULL
OR name <> btrim(name)
OR "sortOrder" < 0
OR (description IS NOT NULL AND NULLIF(btrim(description), '') IS NULL)
OR (icon IS NOT NULL AND NULLIF(btrim(icon), '') IS NULL);
SELECT
'substrate_thickness_spec_quality_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "SubstrateThicknessSpec"
WHERE NULLIF(btrim(name), '') IS NULL
OR name <> btrim(name)
OR "sortOrder" < 0
OR "thicknessMm" <= 0
OR "sheetLengthMm" <= 0
OR "sheetWidthMm" <= 0;
SELECT
'hardware_mapping_quality_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "HardwareMapping"
WHERE (
CASE WHEN NULLIF(btrim(COALESCE("blockName", '')), '') IS NOT NULL THEN 1 ELSE 0 END
+ CASE WHEN NULLIF(btrim(COALESCE("signatureHash", '')), '') IS NOT NULL THEN 1 ELSE 0 END
) <> 1
OR "usageCount" < 0
OR NULLIF(btrim("createdBy"), '') IS NULL
OR "createdBy" <> btrim("createdBy");
SELECT
'location_and_material_binding_quality_risk' AS check_name,
(
SELECT COUNT(*)::integer
FROM "SubstrateFinish"
WHERE NULLIF(btrim("substrateId"), '') IS NULL
OR NULLIF(btrim("finishId"), '') IS NULL
) AS substrate_finish_risk_count,
(
SELECT COUNT(*)::integer
FROM "PanelMaterial"
WHERE NULLIF(btrim("panelId"), '') IS NULL
OR NULLIF(btrim("materialId"), '') IS NULL
) AS panel_material_risk_count,
(
SELECT COUNT(*)::integer
FROM "AssetVariantLocationBinding"
WHERE NULLIF(btrim("assetVariantId"), '') IS NULL
OR NULLIF(btrim("warehouseLocationId"), '') IS NULL
) AS asset_variant_location_risk_count,
(
SELECT COUNT(*)::integer
FROM "PreSkuLocationBinding"
WHERE NULLIF(btrim("preSkuId"), '') IS NULL
OR NULLIF(btrim("warehouseLocationId"), '') IS NULL
) AS pre_sku_location_risk_count;
SELECT
'legacy_packaging_plan_quality_risk' AS check_name,
COUNT(*)::integer AS row_count
FROM "PackagingPlan"
WHERE NULLIF(btrim(name), '') IS NULL
OR name <> btrim(name)
OR "boxCount" <= 0
OR jsonb_typeof(boxes) <> 'array'
OR ("totalWeight" IS NOT NULL AND "totalWeight" < 0)
OR ("totalVolume" IS NOT NULL AND "totalVolume" < 0)
OR (description IS NOT NULL AND NULLIF(btrim(description), '') IS NULL)
OR (notes IS NOT NULL AND NULLIF(btrim(notes), '') IS NULL);
SELECT
'config_audit_permission_quality_risk' AS check_name,
(
SELECT COUNT(*)::integer
FROM "SystemConfig"
WHERE NULLIF(btrim(key), '') IS NULL
OR key <> btrim(key)
OR (description IS NOT NULL AND NULLIF(btrim(description), '') IS NULL)
) AS system_config_risk_count,
(
SELECT COUNT(*)::integer
FROM "ProviderConfig"
WHERE NULLIF(btrim("serviceType"), '') IS NULL
OR "serviceType" <> btrim("serviceType")
OR NULLIF(btrim(name), '') IS NULL
OR name <> btrim(name)
OR NULLIF(btrim("baseUrl"), '') IS NULL
OR "baseUrl" <> regexp_replace(btrim("baseUrl"), '/+$', '')
OR NULLIF(btrim("apiKey"), '') IS NULL
OR "apiKey" <> btrim("apiKey")
OR "sortOrder" < 0
OR (model IS NOT NULL AND NULLIF(btrim(model), '') IS NULL)
OR (extra IS NOT NULL AND jsonb_typeof(extra) <> 'object')
) AS provider_config_risk_count,
(
SELECT COUNT(*)::integer
FROM (
SELECT "serviceType"
FROM "ProviderConfig"
WHERE "isActive" = true
GROUP BY "serviceType"
HAVING COUNT(*) > 1
) duplicated_active
) AS provider_active_conflict_count,
(
SELECT COUNT(*)::integer
FROM "ThemeConfig"
WHERE NULLIF(btrim(name), '') IS NULL
OR name <> btrim(name)
OR NULLIF(btrim("createdBy"), '') IS NULL
OR "createdBy" <> btrim("createdBy")
OR (description IS NOT NULL AND NULLIF(btrim(description), '') IS NULL)
OR ("startDate" IS NOT NULL AND "endDate" IS NOT NULL AND "startDate" >= "endDate")
OR ("homeBackground" IS NOT NULL AND jsonb_typeof("homeBackground") <> 'object')
OR ("loginPanel" IS NOT NULL AND jsonb_typeof("loginPanel") <> 'object')
) AS theme_config_risk_count,
(
SELECT COUNT(*)::integer
FROM "IntakeNodePermissionOverride"
WHERE NULLIF(btrim("targetKey"), '') IS NULL
OR "targetKey" <> btrim("targetKey")
OR NULLIF(btrim("subjectKey"), '') IS NULL
OR "subjectKey" <> btrim("subjectKey")
OR NULLIF(btrim(action), '') IS NULL
OR action <> btrim(action)
OR ("createdBy" IS NOT NULL AND NULLIF(btrim("createdBy"), '') IS NULL)
OR ("updatedBy" IS NOT NULL AND NULLIF(btrim("updatedBy"), '') IS NULL)
) AS permission_override_risk_count,
(
SELECT COUNT(*)::integer
FROM "AssistedAssemblyAiRender"
WHERE NULLIF(btrim("createdBy"), '') IS NULL
OR "createdBy" <> btrim("createdBy")
OR NULLIF(btrim(prompt), '') IS NULL
OR prompt <> btrim(prompt)
OR jsonb_typeof(params) <> 'object'
OR jsonb_typeof("resultImages") <> 'array'
OR jsonb_typeof("workspaceSnapshot") <> 'object'
OR jsonb_typeof("assetSnapshot") <> 'object'
OR ("attempts" IS NOT NULL AND jsonb_typeof("attempts") <> 'array')
OR ("durationMs" IS NOT NULL AND "durationMs" < 0)
OR ("negativePrompt" IS NOT NULL AND NULLIF(btrim("negativePrompt"), '') IS NULL)
OR ("referenceImageUrl" IS NOT NULL AND NULLIF(btrim("referenceImageUrl"), '') IS NULL)
OR ("externalRequestId" IS NOT NULL AND NULLIF(btrim("externalRequestId"), '') IS NULL)
OR ("errorMessage" IS NOT NULL AND NULLIF(btrim("errorMessage"), '') IS NULL)
OR (status = 'SUCCEEDED' AND jsonb_array_length("resultImages") = 0)
OR (status = 'FAILED' AND NULLIF(btrim(COALESCE("errorMessage", '')), '') IS NULL)
) AS ai_render_risk_count,
(
SELECT COUNT(*)::integer
FROM "Feedback"
WHERE NULLIF(btrim(title), '') IS NULL
OR title <> btrim(title)
OR NULLIF(btrim(description), '') IS NULL
OR description <> btrim(description)
OR NULLIF(btrim(category), '') IS NULL
OR category <> btrim(category)
OR array_position(images, '') IS NOT NULL
OR EXISTS (SELECT 1 FROM unnest(images) AS image WHERE NULLIF(btrim(image), '') IS NULL OR image <> btrim(image))
OR ("comments" IS NOT NULL AND jsonb_typeof("comments") <> 'array')
OR (resolution IS NOT NULL AND NULLIF(btrim(resolution), '') IS NULL)
OR (status = 'RESOLVED' AND ("resolvedAt" IS NULL OR NULLIF(btrim(COALESCE(resolution, '')), '') IS NULL))
) AS feedback_risk_count,
(
SELECT COUNT(*)::integer
FROM "ActivityLog"
WHERE NULLIF(btrim("userId"), '') IS NULL
OR "userId" <> btrim("userId")
OR NULLIF(btrim(action), '') IS NULL
OR action <> btrim(action)
OR (("targetType" IS NULL) <> ("targetId" IS NULL))
OR ("targetType" IS NOT NULL AND NULLIF(btrim("targetType"), '') IS NULL)
OR ("targetId" IS NOT NULL AND NULLIF(btrim("targetId"), '') IS NULL)
OR ("changes" IS NOT NULL AND jsonb_typeof("changes") <> 'object')
OR ("metadata" IS NOT NULL AND jsonb_typeof("metadata") <> 'object')
) AS activity_log_risk_count;