-
Notifications
You must be signed in to change notification settings - Fork 19
changes by Rachana for Complaints module feature #167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
… for Complaints module
WalkthroughAdds many new MDMS data artifacts and Draft‑07 JSON Schema records for HCM Admin Console v0.5: app link, module/feature definitions, localisation, UI mappings/panels, renderer configs, email template, help/tutorial and privacy content, campaign rules, service seed data, form config templates, and login UI config. Changes
Sequence Diagram(s)Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Poem
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
… for Complaints module
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 24
🧹 Nitpick comments (39)
mdms/HCM/Admin Console v0.5/Data/RAINMAKER-PGR.ServiceDefs (4)
10-10: All 'order' values are 1; assign distinct ranks for deterministic sort.Using the same order across all items can lead to unstable ordering in UI lists. Use a simple 1..8 sequence.
"order": 1, @@ - "order": 1, + "order": 2, @@ - "order": 1, + "order": 3, @@ - "order": 1, + "order": 4, @@ - "order": 1, + "order": 5, @@ - "order": 1, + "order": 6, @@ - "order": 1, + "order": 7, @@ - "order": 1, + "order": 8,Also applies to: 34-34, 58-58, 82-82, 106-106, 130-130, 154-154, 178-178
6-6: uniqueIdentifier values contain spaces; consider slug/Code to avoid whitespace key issues.Many MDMS consumers use identifier fields as keys; spaces can be brittle (URL params, map keys, i18n message codes). Consider aligning uniqueIdentifier to the code (e.g., NotEnoughStock).
Optional diff (if schema allows):
- "uniqueIdentifier": "Not Enough Stock", + "uniqueIdentifier": "NotEnoughStock", @@ - "uniqueIdentifier": "Sync Not Working", + "uniqueIdentifier": "SyncNotWorking", @@ - "uniqueIdentifier": "Technical Issues", + "uniqueIdentifier": "TechnicalIssues", @@ - "uniqueIdentifier": "User Account Issues", + "uniqueIdentifier": "UserAccountIssues", @@ - "uniqueIdentifier": "Data Issues", + "uniqueIdentifier": "DataIssues", @@ - "uniqueIdentifier": "Security Issues", + "uniqueIdentifier": "SecurityIssues", @@ - "uniqueIdentifier": "Performance Issue", + "uniqueIdentifier": "PerformanceIssue", @@ - "uniqueIdentifier": "Other", + "uniqueIdentifier": "Other",Also applies to: 30-30, 54-54, 78-78, 102-102, 126-126, 150-150, 174-174
12-12: Confirm 'keywords' type (string vs array).The value is a comma-separated string in all entries. Some MDMS schemas expect an array of strings (["sync","working"]). Please confirm the schema’s type; if it’s array, we should convert.
Also applies to: 36-36, 60-60, 84-84, 108-108, 132-132, 156-156, 180-180
1-1: Path contains spaces; verify ingestion tooling handles it.Some pipelines and scripts glob paths or split on whitespace. If you’ve had issues before, consider renaming to AdminConsole-v0.5 for robustness. Otherwise, please confirm your MDMS loader pathing is space-safe.
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.CampaignNamingConvention (1)
1-12: Guard against drift: integrate constraint validation into CIThe manual run shows that the current JSON file passes all checks (valid JSON, unique
id, exactly 4 constraints, correct prefix). To ensure future edits don’t inadvertently break this, please automate these verifications in your CI pipeline:
Create a validation script (e.g.
scripts/validate-campaign-naming.sh) that:
- Uses
jq .to assert JSON validity- Checks for duplicate
idvalues (jq -r '.[].id' … \| sort \| uniq -d)- Verifies exactly four entries in the
dataarray (jq '.[0].data | length' …)- Confirms each constraint starts with
CONSOLE_NAMING_CONVENTION_(jq -r '.[0].data[]' … \| awk …)Update your CI configuration (for example, in
.github/workflows/ci.yml) to run this script on every pull request and commit.Document the check in
CONTRIBUTING.mdor your project guide so all contributors are aware.This will guard against typos, missing or extra items, and ensure naming conventions remain consistent over time.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppLink (1)
16-19: Strengthen validation: mark appLink as URI, non-empty, and HTTPSAdding JSON Schema constraints prevents bad data from entering MDMS.
Apply this diff:
- "appLink": { - "type": "string" - } + "appLink": { + "type": "string", + "minLength": 1, + "format": "uri", + "pattern": "^https?://" + }mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig (4)
2-2: Standardize tenantId placeholder.Other schemas in this PR use "{{tenantId}}". Please align for consistency and portability.
- "tenantId": "mz", + "tenantId": "{{tenantId}}",
18-70: Lock down unknown fields in the schema.Add additionalProperties=false at the schema root to reject unexpected fields in docs using this schema.
"properties": { ... - } - }, + }, + "additionalProperties": false + },
22-36: Constrain metadata object to known keys.Add additionalProperties=false so only {type, format} are allowed.
"properties": { ... - } + }, + "additionalProperties": false },
40-68: Constrain attributeToRename to the declared keys.Prevents typos from silently flowing to MDMS.
"attributeToRename": { "type": "object", "properties": { ... - } + }, + "additionalProperties": false }mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AllowedModules (1)
1-29: Tighten schema: title, allowedModule constraints, and additionalProperties.
- Title is generic; use the schema name.
- For allowedModule, add minItems and uniqueItems.
- Add additionalProperties=false at root to prevent stray keys.
"definition": { "type": "object", - "title": "Generated schema for Root", + "title": "HCM-ADMIN-CONSOLE.AllowedModules", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "allowedModule", "projectType" ], "x-unique": [ "projectType" ], "properties": { "projectType": { "type": "string" }, "allowedModule": { "type": "array", + "minItems": 1, + "uniqueItems": true, "items": { "type": "string" } } - } + }, + "additionalProperties": false },mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.MasterLandingScreen (2)
115-116: Trim trailing spaces in code values.Two codes have trailing spaces which can break i18n keys or lookups.
- "code": "Project Staff ", + "code": "Project Staff", ... - "code": "Project ", + "code": "Project",Also applies to: 175-175
90-90: Normalize icon casing."icon" uses mixed casing ("Work" vs "work"). If icons are case-sensitive in the UI library, this can break rendering. Consider normalizing casing consistently.
- "icon": "Work", + "icon": "work",If the UI expects a specific set of names, confirm allowed values and we can batch-fix across the file.
Also applies to: 158-158, 253-253, 321-321
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppConfigCache (1)
19-29: Harden schema: constrain allowed values and disallow extras.
- If flow and projectType are catalogued elsewhere, use enum to prevent drift.
- Disallow additional root properties.
"properties": { "flow": { - "type": "string" + "type": "string" + /* Optionally: + "enum": ["REGISTRATIONFLOW","DELIVERYFLOW"] + */ }, "projectType": { - "type": "string" + "type": "string" + /* Optionally populate from HCM-PROJECT-TYPES.projectTypes */ }, "campaignNumber": { "type": "string" } - } + }, + "additionalProperties": falsemdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.schemas (4)
4-4: Standardize tenantId placeholder.Align with other schema files using "{{tenantId}}".
- "tenantId": "mz", + "tenantId": "{{tenantId}}",
221-224: Non-standard JSON Schema format: "regex".Draft-07 does not define "regex" as a built-in format. Some validators ignore unknown formats; others may error. Recommend removing "format" here and relying on "pattern" semantics at usage-time, or change to a documented format.
- "pattern": { - "type": "string", - "format": "regex" - }, + "pattern": { + "type": "string" + },
284-289: Use integers for selections with lower bounds.maxSelections and minSelections should be integers with min 0.
- "maxSelections": { - "type": "number" - }, - "minSelections": { - "type": "number" - } + "maxSelections": { + "type": "integer", + "minimum": 0 + }, + "minSelections": { + "type": "integer", + "minimum": 0 + }
35-106: Disallow undeclared keys inside property item definitions.Add additionalProperties=false in each items schema (enumProperties, numberProperties, stringProperties) to catch typos in UI metadata.
"items": { "type": "object", "required": [ "name", "description" ], "properties": { ... - }, + }, + "additionalProperties": false, "minProperties": 1 },Apply similarly to numberProperties.items and stringProperties.items.
Also applies to: 110-194, 198-301
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.DETAILS_RENDERER_CONFIG (1)
16-43: Forbid unknown top-level properties in records validated by this schemaTo prevent typos from silently passing validation, add additionalProperties: false at the root of the record schema (inside definition).
Apply this small addition:
"properties": { "entity": { "type": "string" }, "displayFields": { "type": "array", ... } - } + }, + "additionalProperties": falsemdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate (1)
52-66: navigateTo shape: consider requiring both name and type togetherIf navigateTo is provided, usually both name and type are needed. Use if/then to enforce togetherness.
I can add a small if/then/else block to enforce that when navigateTo exists, both its name and type are present. Want me to push a patch?
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppScreenLocalisationConfig (2)
6-15: Tighten validation: disallow unknown keys and require at least one field.Add additionalProperties: false at root and for each field item; require at least one entry in fields. This prevents typos like localizable/localisable drift from silently passing.
Apply this diff:
"definition": { "type": "object", "title": "Generated schema for Root", "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, "required": [ "screenName", "LocalisationModule", "moduleVersion", "minModuleVersion", "fields" ], @@ "properties": { "fields": { "type": "array", + "minItems": 1, "items": { "type": "object", + "additionalProperties": false, "required": [ "fieldType" ], "properties": { "fieldType": { "type": "string" }, "applicableFieldTypes": { "type": "array", "items": { "type": "string" } }, "localisableProperties": { "type": "array", "items": { "type": "string" } } } } },Also applies to: 20-45
49-57: Validate version strings with a pattern (semver-ish).Today these are free-form strings; add a simple dotted-numeric pattern so downstream comparisons don’t break on accidental text.
"moduleVersion": { - "type": "string" + "type": "string", + "pattern": "^(?:0|[1-9]\\d*)(?:\\.(?:0|[1-9]\\d*)){0,2}$" }, "minModuleVersion": { - "type": "string" + "type": "string", + "pattern": "^(?:0|[1-9]\\d*)(?:\\.(?:0|[1-9]\\d*)){0,2}$" },mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig (3)
274-295: Inconsistent modeling of scanner fields (type/fieldType mismatch).scanner uses metadata.type "string" and fieldType "button" (Lines 281–286), while qrscanner uses metadata.type "button" and fieldType "qrscanner" (Lines 631–635). Pick one contract (button trigger vs. value-producing control) and align both to it to avoid renderer conditionals.
If “button trigger” is intended, consider:
"data": { "type": "scanner", "order": 7, "metadata": { - "type": "string", + "type": "button", "format": "scanner" }, - "fieldType": "button", + "fieldType": "scanner", "attributeToRename": {} },And keep qrscanner consistent with the same typing.
Also applies to: 623-644
430-446: number.metadata.format is "text" — verify intended renderer.If the UI expects a numeric input renderer, format: "number" (or "numeric") is more explicit than "text".
"metadata": { "type": "integer", - "format": "text" + "format": "number" },
224-246: Normalize fieldType naming conventions.Mixed casing across fieldType values (e.g., "checkbox", "textInput", "DetailsCard", "Table", "text") may cause fragile lookups. Recommend a single convention (e.g., kebab-case or lowerCamelCase) and adapters where necessary.
Also applies to: 670-691, 693-713, 455-478, 485-496
mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.MasterLandingScreen (2)
39-41: order should be numeric, not string.Using a number avoids string-sort pitfalls ("10" < "2"). Switch to integer.
- "order": { - "type": "string" - }, + "order": { + "type": "integer", + "minimum": 0 + },
7-13: Disallow unknown keys and enforce non-empty arrays.Add additionalProperties: false at root and link items; require at least one link and at least one role per link.
"definition": { "type": "object", "title": "Generated schema for Root", "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, "required": [ "screen", "links" ], @@ "properties": { "links": { "type": "array", + "minItems": 1, "items": { "type": "object", + "additionalProperties": false, "required": [ "url", "code", "icon", "order", "roles" ], "properties": { @@ "roles": { "type": "array", + "minItems": 1, "items": { "type": "string" } } } } },Also applies to: 17-55
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppModuleSchema (1)
19-39: Define feature shape more completely (type/order/format).Data includes these fields; declare them to improve validation. Keep additionalProperties allowed if future fields are expected.
"features": { "type": "array", "items": { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string" }, + "type": { + "type": "string", + "enum": ["form", "template", "scanner", "map", "offlinedata"] + }, + "format": { + "type": "string" + }, + "order": { + "type": "integer", + "minimum": 0 + }, "disabled": { "type": "boolean", "default": false }, "description": { "type": "string" } } } },mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.emailTemplate (1)
17-28: Tighten validation for codes (minLength + pattern).To prevent silent errors from empty/ill-formed codes, enforce non-empty strings and an uppercase/underscore convention (adjust pattern if your convention differs).
"properties": { "bodyCodes": { "type": "array", "items": { - "type": "string" + "type": "string", + "minLength": 1, + "pattern": "^[A-Z0-9_\\.]+$" }, "minItems": 1, "description": "List of message codes to be used in the body" }, "subjectCode": { - "type": "string", + "type": "string", + "minLength": 1, + "pattern": "^[A-Z0-9_\\.]+$", "description": "Message code for the localized email subject" } },mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig (2)
5-106: Lock down schema to prevent silent typos.Add additionalProperties=false at the definition root to avoid accidental fields slipping through. (Optional but recommended; matches your emailTemplate schema.)
"definition":{ "type": "object", "title": "HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "tab", "label", "order", "fieldType" ], "x-unique": [ "label" ], "properties": { ... } - }, + , "additionalProperties": false + },
98-103: Prevent empty values in visibilityEnabledFor.Give item strings a minimum length to catch accidental empty entries in data.
"visibilityEnabledFor": { "type": "array", - "items": { - "type": "string" - } + "items": { + "type": "string", + "minLength": 1 + } }mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig (1)
341-347: Confirm whether decimals/negatives are permitted in min/max validators.Patterns currently accept only non-negative integers. If numeric fields can be decimal or negative, update regex accordingly, e.g., allow optional sign and fractional part.
Proposed patterns if needed:
- "pattern": "^(0|[1-9]\\d*)$" + "pattern": "^[+-]?(?:\\d+\\.?\\d*|\\d*\\.\\d+)$"Please confirm expected numeric domain before applying.
Also applies to: 374-376
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig (3)
33-41: Require at least one page in a form.A minItems guard helps catch empty forms early.
- "pages": { - "type": "array", + "pages": { + "type": "array", + "minItems": 1, "items": { "type": "object", "required": [ "page", "label", "order", "properties" ],
56-71: Empty required array for navigateTo — either remove or enforce fields.If navigateTo is used, it typically needs both name and type. Tighten or drop the empty required declaration.
Option A (enforce):
- "navigateTo": { + "navigateTo": { "type": "object", - "required": [], + "required": ["name","type"], "properties": {Option B (relax): remove the empty required line entirely.
- "required": [],
181-196: Add additionalProperties=false at the root definition to avoid typos.This mirrors your other schemas and reduces drift in data shape over time.
} }, - "isActive": true + "isActive": true }Apply at the end of the definition object:
- }, + , "additionalProperties": false + },mdms/HCM/Admin Console v0.5/Schemas/commonUiConfig.HelpTutorial (1)
16-57: Harden the JSON Schema to prevent invalid data (types, constraints, and extraneous keys).Tighten validations for url/ordering/pages/color and block unknown fields. This reduces runtime surprises and keeps MDMS data clean.
Apply this diff inside the "definition" object:
@@ - "properties": { + "properties": { "module": { "type": "string" }, "helpContent": { "type": "array", + "minItems": 1, "items": { "type": "object", "required": [ "url", "title", "icon" ], - "properties": { + "properties": { "url": { - "type": "string" + "type": "string", + "format": "uri" }, "icon": { "type": "string" }, "order": { - "type": "number" + "type": "integer", + "minimum": 0 }, "pages": { "type": "array", + "minItems": 1, "items": { "type": "string" } }, "title": { - "type": "string" + "type": "string", + "minLength": 1 }, "actionText": { "type": "string" }, "iconBackground": { - "type": "string" + "type": "string", + "pattern": "^#([0-9a-fA-F]{6})$" } - } + }, + "additionalProperties": false } } - } + }, + "additionalProperties": false },mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppModuleSchema (1)
99-101: COMPLAINTS module has no features but the PR objective mentions "Complaints module feature".This looks incomplete or mismatched with the PR title/intent.
- If features are expected now, add them here to keep AppModuleSchema in sync with navigation and permissions.
- If not, please update the PR description/title or add a note.
I can help draft a feature block once you confirm the intended features (e.g., complaint intake, list, assignment, map view).
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.schemas (2)
210-215: Fix typos in uniqueKey/description to avoid downstream mismatches.
- userEmployementType → userEmploymentType
- "Employement Type" → "Employment Type"
- userPrefferedName → userPreferredName
Apply:
@@ - "uniqueKey": "userEmployementType", - "isRequired": true, - "description": "Employement Type", + "uniqueKey": "userEmploymentType", + "isRequired": true, + "description": "Employment Type", @@ - "uniqueKey": "userPrefferedName", + "uniqueKey": "userPreferredName",Also applies to: 288-293
112-133: Correct mismatched descriptions in target-DEFAULT.Descriptions don’t align with the field names.
Update as below:
{ "name": "HCM_ADMIN_CONSOLE_TARGET_INDIVIDUAL", "type": "number", @@ - "description": "Total population", + "description": "Total individuals", @@ }, { "name": "HCM_ADMIN_CONSOLE_TARGET_HOUSEHOLD", "type": "number", @@ - "description": "Total rooms", + "description": "Total households",
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (31)
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AllowedModules(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppLink(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppModuleSchema(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppScreenLocalisationConfig(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.CampaignNamingConvention(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.DETAILS_RENDERER_CONFIG(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.emailTemplate(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.schemas(1 hunks)mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.targetConfigs(1 hunks)mdms/HCM/Admin Console v0.5/Data/RAINMAKER-PGR.ServiceDefs(1 hunks)mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.MasterLandingScreen(1 hunks)mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.PrivacyPolicy(1 hunks)mdms/HCM/Admin Console v0.5/Data/commonUiConfig.HelpTutorial(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AllowedModules(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppConfigCache(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppLink(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppModuleSchema(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppScreenLocalisationConfig(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.CampaignNamingConvention(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.DETAILS_RENDERER_CONFIG(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.emailTemplate(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.schemas(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.MasterLandingScreen(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.PrivacyPolicy(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/commonUiConfig.HelpTutorial(1 hunks)
🔇 Additional comments (38)
mdms/HCM/Admin Console v0.5/Data/RAINMAKER-PGR.ServiceDefs (1)
13-13: Verify 'menuPath' = "Sync" for every service.All eight categories route to "Sync". For items like "Security Issues" or "User Account Issues", that path may be unintended. Please confirm this matches the intended navigation for the Complaints module.
Also applies to: 37-37, 61-61, 85-85, 109-109, 133-133, 157-157, 181-181
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AllowedModules (2)
1-9: LGTM for initial Bednet entryShape and keys look consistent for a single-project entry with an array of module codes.
3-7: The script above will locate the exact path of your AllowedModules file undermdms/**and show any in-repo references so we can confirm the correct filename and context. Once we have that, I’ll update my verification steps accordingly.mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.CampaignNamingConvention (1)
1-12: LGTM; captures the four naming constraintsData structure aligns with a simple id/data/isActive record.
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.targetConfigs (1)
31-38: I wasn’t able to locate and parse theHCM-ADMIN-CONSOLE.targetConfigsfile at the claimed path, so I can’t confirm whether anySMC_…-prefixed keys are present under theMR-DNcampaign. Please verify:
- The exact relative path to
HCM-ADMIN-CONSOLE.targetConfigsfor “Admin Console v0.5”- That the file contains the snippet in question
- Whether any columns under
"campaignType": "MR-DN"still use theHCM_ADMIN_CONSOLE_TARGET_SMC_*prefixOnce you confirm or correct the path, rerun the JSON key check to determine if those prefixes need renaming.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppLink (2)
1-22: Schema structure looks fine for an AppLink single-record definitionNo blocking concerns beyond the validation nit above.
12-14: Action: confirm MDMS enforces property-level uniqueness for "appLink" (x-unique)Quick summary: I found many schemas using "x-unique" (including the AppLink schema in this PR), but I could not locate ingestion/MDMS code in this repo that maps/enforces x-unique vs other uniqueness keys. Please verify ingestion behaviour.
Files to check:
- mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppLink — lines ~12–14:
"x-unique": [ "appLink" ],- mdms/HCM/HCM ADMINCONSOLE v0.3/schemas.json (multiple SchemaDefinition entries use "x-unique")
- mdms/HCM/HCM ADMINCONSOLE v0.2/schemas.json
- mdms/HCM/HCM ADMINCONSOLE v0.1/schemas.json
Requested verification (manual): confirm which uniqueness key the deployed MDMS ingestion expects (x-unique vs uniqueKeys vs per-property "unique": true) and whether the current ingestion enforces uniqueness for appLink. If ingestion expects a different key, update the schema or ingestion mapping accordingly.
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppLink (2)
1-5: LGTM for data recordMatches schema expectation with a single appLink field.
3-3: External link format is valid—please confirm policy and long-term reliability
- The provided URL is HTTPS and on the google.com domain, so it meets the basic security requirements.
- Please verify that “google.com” (or more specifically “drive.google.com”) is allow-listed in your external-links policy.
- If long-term availability is critical, consider mirroring or hosting this asset on an internal/static asset store to guard against permission changes or link breakage.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig (2)
15-17: x-unique on type looks good.Single-field uniqueness on "type" is appropriate for a mapping registry.
37-39: FieldType enum suggestion inconclusive—please verify data file structureWe attempted to enumerate distinct
fieldTypevalues from the Data file, but the script returned onlynull, indicating that nofieldTypeproperty values are defined in the array items.• File needing attention
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig(lines 37-39):"fieldType": { "type": "string" },• Next steps
- Confirm whether the Data file defines field types as object keys rather than properties. For example, if the file structure is:
then enumerate the keys instead of{ "TEXT": { … }, "DATE": { … }, "NUMBER": { … } }.[] .fieldType.
Example:jq -r 'keys[]' /path/to/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig- Once real field types (e.g.,
TEXT,NUMBER,DATE) are identified, update the schema to use anenum:This will catch configuration errors when invalid values are supplied."fieldType": { - "type": "string" + "type": "string", + "enum": ["TEXT", "NUMBER", "DATE", …] },mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AllowedModules (1)
13-15: LGTM on uniqueness for projectType.Project type driving a single allowedModules set makes sense.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppConfigCache (2)
1-32: Overall schema structure is sound.Lean, composable keys with a sensible unique constraint. With the above refinements, this should be robust.
14-18: Confirmed: Composite “x-unique” Uses Flat String ArraysAll existing MDMS schemas consistently define composite uniqueness as a flat array of property names (e.g.,
"x-unique": ["module"]or
"x-unique": ["name", "project"]) with no examples of an array-of-arrays encoding. This includes the new AppConfigCache schema.
• Locations inspected:
- commonUiConfig.HelpTutorial (x-unique: ["module"])
- commonHCMUiConfig.MasterLandingScreen (x-unique: ["screen"])
- HCM-ADMIN-CONSOLE.FormConfigTemplate & FormConfig (x-unique: ["name","project"])
- …and AppConfigCache itself (x-unique: ["campaignNumber","projectType","flow"])
• No nested arrays (e.g.,
[["a","b","c"]]) found in the entiremdms/HCM/Admin Console v0.5/Schemas/directory.Action:
- Proceed with the flat-array encoding in AppConfigCache.
- If your MDMS validator truly requires an array-of-arrays, you’ll need to update all schemas accordingly; otherwise, this implementation matches the existing codebase.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.DETAILS_RENDERER_CONFIG (1)
1-5: Envelope looks consistent with MDMS patterntenantId, code, description, definition, and isActive are present and correctly shaped.
Also applies to: 45-46
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.DETAILS_RENDERER_CONFIG (2)
80-84: isList: true conflicts with jsonPath indexing [0]identifierType uses jsonPath "Individual.identifiers[0].identifierType" (single item) but sets "isList": true. If the UI expects a list, either:
- change jsonPath to target all items, or
- set isList to false for a single scalar.
Two alternative patches:
Option A (treat as list):
- "isList": true, - "jsonPath": "Individual.identifiers[0].identifierType", + "isList": true, + "jsonPath": "Individual.identifiers[*].identifierType",Option B (treat as scalar):
- "isList": true, + "isList": false,
6-9: Address structure consistency for address.locality pathHousehold uses Household.address.locality.code (no index) while Individual uses Individual.address[0].locality.code. If address is an array for both, standardize to index or wildcard.
If address is an array, consider:
- "jsonPath": "Household.address.locality.code", + "jsonPath": "Household.address[0].locality.code",If it’s an object for Household, leave as-is and confirm model differences are intentional.
Also applies to: 60-63
mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.PrivacyPolicy (1)
1-5: Envelope fields look correct and consistentMDMS envelope (tenantId, code, description, definition, isActive) is present.
Also applies to: 73-74
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate (1)
69-88: Do you really want to require format and hidden for every field property?Requiring format and hidden for all field items can be onerous and may not hold for simple inputs. Consider making them optional unless consumers depend on this strongly.
If you decide to make them optional, remove them from the required array:
- "required": [ - "type", - "label", - "order", - "format", - "hidden" - ], + "required": ["type", "label", "order"],Also applies to: 97-118
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.CampaignNamingConvention (1)
1-5: Envelope is in place and consistentMDMS wrapper fields look good; code and isActive are correctly set.
Also applies to: 30-31
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppScreenLocalisationConfig (1)
1-61: Schema envelope looks consistent with MDMS conventions.Top-level structure and x-unique usage are sound.
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig (2)
504-520: Confirm attributeToRename mapping direction for administrativeArea."appAdministrativeArea": "administrativeArea" — verify whether keys are source->target or target->source to avoid silent drops.
1-759: FieldTypeMappingConfig Validation Results & Next Steps
- ✅ Unique identifiers are all distinct.
- ✅ No duplicate
ordervalues detected.⚠️ Mixed-casefieldTypevalues found for the following entries—please confirm whether the schema enforces a specific casing and, if so, normalize them:
- editHousehold
- editIndividual
- addMember
- IndividualDeliverySecondaryButton
- IndividualDeliveryPrimaryButton
- AcknowledgementTitle
- AcknowledgementDescription
- SecondaryButton
- PrimaryButton
- dob
- date
- mobileNumber
- text
- latLng
- administrativeArea
- searchByProximity
- searchBar
- DetailsCard
- Table
- searchByID
- ⏳ Schema validation still pending: please run each entry against the
HCM-ADMIN-CONSOLE.FieldTypeMappingConfigschema (found atmdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig) and resolve any mismatches before merging.mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.MasterLandingScreen (1)
1-58: Envelope and structure look good overall.Aside from tenantId and minor validation tweaks, the schema matches the data model intent.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppModuleSchema (1)
1-46: Minimal, clear schema.Core constraints (code required, x-unique) are correct.
mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.PrivacyPolicy (1)
1-395: Data structure and rendering hints are coherent.Overall layout (header, module, contents, nested descriptions) matches expectations.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.emailTemplate (1)
1-33: Schema structure looks solid and consistent with other MDMS entries.Wrapper keys, draft-07 usage, required fields, uniqueness, and additionalProperties=false are all in order.
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.emailTemplate (1)
1-12: Data aligns with the schema; one template defined correctly.The array shape and the presence of subjectCode and bodyCodes (minItems=1) are correct.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig (1)
1-107: Overall schema is well-structured for the panel metadata.Good coverage of nested conditional fields and relevant toggles.
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig (2)
1-598: Config is thorough and consistent with the schema; good use of conditionalField for UX.The structure reads cleanly; orders/tabOrders seem coherent.
443-468: Ensure MDMS masters exist and are activeThe snippet in
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig
(lines 443–468) references these mdmsOptions:
- masterName: GenderType (schemaCode: common-masters.GenderType)
- masterName: HOUSE_STRUCTURE_TYPES (schemaCode: HCM.HOUSE_STRUCTURE_TYPES)
- masterName: ID_TYPE_OPTIONS_POPULATOR (schemaCode: HCM.ID_TYPE_OPTIONS_POPULATOR)
- masterName: DELIVERY_COMMENT_OPTIONS_POPULATOR (schemaCode: HCM.DELIVERY_COMMENT_OPTIONS_POPULATOR)
- masterName: ServiceDefs (schemaCode: RAINMAKER-PGR.ServiceDefs)
A search of the codebase did not locate any matching definitions. Please verify these masters are present and active in your MDMS service or environment to avoid runtime errors in dropdowns.
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig (2)
188-190: Confirm version type (number vs integer).If you version by whole numbers (1,2,3), use integer; if semantic-style decimals are expected (e.g., 1.1), keep number.
Proposed change if integer is intended:
- "version": { - "type": "number" - }, + "version": { + "type": "integer", + "minimum": 0 + },
1-197: FormConfig schema is comprehensive and aligns with the new Complaints flow.Includes COMPLAINTFLOW in name enum and covers nested page/property structures well.
mdms/HCM/Admin Console v0.5/Schemas/commonUiConfig.HelpTutorial (1)
13-15: Confirm MDMS engine support for “x-unique”
Our repo-wide search shows “x-unique” used in over a dozen JSON schema files, but there are no code references in the MDMS validator/enricher within this repo—suggesting the engine may ignore this keyword at ingest time.• mdms/HCM/Admin Console v0.5/Schemas/commonUiConfig.HelpTutorial (lines 13–15)
• mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.PrivacyPolicy (lines 11–15)
• mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate (lines 9–13)
• …and many more under mdms/HCM/Admin Console v0.5/Schemas/**Snippet (unchanged):
"x-unique": [ "module" ],Please verify with MDMS documentation or the platform team whether “x-unique” is recognized by the validator/enricher. If it’s not supported, migrate these module-level uniqueness rules to the platform’s native mechanism (e.g., MDMS master uniqueness or ingest-time checks).
mdms/HCM/Admin Console v0.5/Data/commonUiConfig.HelpTutorial (1)
1-91: Approve: Data valid and external links healthyData matches the expected schema with seven help items for the “campaign” module, each having a unique
orderand all required fields in place.
Performed the optional link health check; all URLs returned valid responses (HTTP/200 OK for assets and HTTP/2 303 redirect for the YouTube link), confirming no broken references.mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppModuleSchema (1)
3-3: Verify “DELV” in module codeI ran
rg -nC2 -S '\bREGISTRATIONANDDELVFLOW\b'and the only occurrence is inmdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppModuleSchemaat line 3. No other lookups will break if you rename it here.• Please confirm whether the abbreviation “DELV” (in
"REGISTRATIONANDDELVFLOW") is intentional.
• If it’s a typo, update it to something like"REGISTRATION_AND_DELIVERY_FLOW"and adjust this line accordingly:{ - "code": "REGISTRATIONANDDELVFLOW", + "code": "REGISTRATION_AND_DELIVERY_FLOW", … }Optional consistency refactor: for all modules (not just REGISTRATIONFLOW/DELIVERYFLOW), consider adding the properties
type,order,format, anddisabledto each feature entry.mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.schemas (2)
51-71: Order numbers duplicate and "COLUUM" appears misspelled in target-MR-DN.
- Both HOUSEHOLD and PRODUCT use orderNumber 3; pick 3 and 4 to keep a stable order.
- "COLUUM" looks like a typo of "COLUMN". Renaming may affect any ingest/export mappings.
If it’s safe to correct now, apply:
- "name": "HCM_ADMIN_CONSOLE_TARGET_SMC_COLUUM_HOUSEHOLD", + "name": "HCM_ADMIN_CONSOLE_TARGET_SMC_COLUMN_HOUSEHOLD", @@ - "orderNumber": 3, + "orderNumber": 3, @@ - "name": "HCM_ADMIN_CONSOLE_TARGET_SMC_COLUUM_PRODUCT", + "name": "HCM_ADMIN_CONSOLE_TARGET_SMC_COLUMN_PRODUCT", @@ - "orderNumber": 3, + "orderNumber": 4,Otherwise, retain existing names and document the intentional spelling to avoid “cleanup” regressions later.
234-247: Phone number must be a string — move HCM_ADMIN_CONSOLE_USER_PHONE_NUMBER from numberProperties → stringPropertiesReason: numeric types ignore regex pattern validators and drop leading zeros; phone numbers must be stored/validated as strings with a regex.
Files that need this change (found in repo search):
- mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.schemas (current file; snippet at ~lines 234–247).
- mdms/HCM/HCMADMINCONSOLEconsolidated/JSON DATAS/HCM Admin Console/adminschema.json (phone appears in numberProperties in multiple places, e.g. ~lines 301–306, 1512–1515, 1891–1896).
- mdms/HCM/HCM Microplanning v0.1/JSON Data/HCM-ADMIN-CONSOLE/adminSchema.json (phone in numberProperties).
- mdms/HCM/HCM ADMINCONSOLE v0.3/JSON DATAS/HCM Admin Console/adminSchema.json (phone in numberProperties).
Suggested change (move to stringProperties and remove min/max):
@@ - "numberProperties": [ - { - "name": "HCM_ADMIN_CONSOLE_USER_PHONE_NUMBER", - "type": "number", - "color": "#93c47d", - "maximum": 9999999999, - "minimum": 1000000000, - "pattern": "^[0-9]{10}$", - "isUnique": true, - "uniqueKey": "userPhoneNumber", - "isRequired": true, - "description": "Phone Number", - "orderNumber": 2, - "errorMessage": "Phone Number must be a 10-digit number.", - "freezeColumnIfFilled": true - } - ], + "numberProperties": [], @@ "stringProperties": [ + { + "name": "HCM_ADMIN_CONSOLE_USER_PHONE_NUMBER", + "type": "string", + "color": "#93c47d", + "pattern": "^[0-9]{10}$", + "isUnique": true, + "uniqueKey": "userPhoneNumber", + "isRequired": true, + "description": "Phone Number", + "orderNumber": 2, + "errorMessage": "Phone Number must be a 10-digit number.", + "freezeColumnIfFilled": true + }, { "name": "HCM_ADMIN_CONSOLE_USER_ROLE",Action required before merging:
- Confirm the Admin Console renderer/form generator treats phone fields from stringProperties correctly. If the UI only reads numberProperties to render numeric inputs, update the renderer mapping to accept phone fields from stringProperties (or add a special-case mapping for this key).
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.DETAILS_RENDERER_CONFIG
Show resolved
Hide resolved
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig
Show resolved
Hide resolved
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig
Show resolved
Hide resolved
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate
Outdated
Show resolved
Hide resolved
|
where is the login config data and its schema @Shreya-egov |
|
appLink master needs to be updated @Shreya-egov |
|
can u check all masters looks like it is not updated properly |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
🧹 Nitpick comments (4)
mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig (2)
1-13: Tighten the root schema: forbid unknown properties and give the schema a descriptive title/descriptionAdd additionalProperties: false at root to prevent silent typos in data and use a more specific title/description to aid debugging.
- "title": "Generated schema for Root", + "title": "HCM Admin Console Login UI Config", + "description": "Schema for mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig", "$schema": "http://json-schema.org/draft-07/schema#", @@ - "properties": { + "additionalProperties": false, + "properties": {
14-31: Harden texts object: forbid extras and require non-empty stringsPrevents accidental miskeys (e.g., “submiButtonLabel”) and empty values slipping through.
- "texts": { - "type": "object", + "texts": { + "type": "object", + "additionalProperties": false, "required": [ @@ - "header": { - "type": "string" - }, - "submitButtonLabel": { - "type": "string" - }, - "secondaryButtonLabel": { - "type": "string" - } + "header": { "type": "string", "minLength": 1 }, + "submitButtonLabel": { "type": "string", "minLength": 1 }, + "secondaryButtonLabel": { "type": "string", "minLength": 1 }mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig (2)
8-21: Duped mandatory signal: keep isMandatory and validation.required in syncYou set both isMandatory: true and validation.required: true. If both are needed by different layers, fine—just ensure there’s no drift later. Consider driving UI strictly from validation.required to avoid duplication.
If you keep both, add a CI check to fail when isMandatory != validation.required for any input in this master. I can provide a script if helpful.
23-34: Same note for password inputMirrors the username concerns about isMandatory vs validation.required. Keep them consistent or dedupe to one source.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig(1 hunks)
🔇 Additional comments (7)
mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig (3)
1-4: Re: earlier comment “where are login config data and schema?”Schema is here (this file). The corresponding data is at mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig. This should address the reviewer’s query on locations.
1-1: Folder naming is consistent with existing MDMS structure—no change neededWe ran the suggested check and found numerous MDMS directories already containing spaces, for example:
mdms/HCM/HCM ADMINCONSOLE v0.1mdms/HCM/HCM Microplanning v0.1mdms/HCM/HCM ADMINCONSOLE v0.3.2 FeedBack- …and now
mdms/HCM/Admin Console v0.5Because spaces are pervasive in the current MDMS directory hierarchy, renaming only this folder would introduce inconsistency. If your goal is to remove spaces across all MDMS paths, that would require a coordinated, global refactor rather than a one-off change.
Proceed as-is for this PR.
10-12: Title uniqueness check passed — no duplicate “title” values found
- In the data file (
mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig), eachtitleoccurs exactly once (CORE_HCM_TITLE_ONE…SEVEN and “login”) — no duplicates detected.- The schema declares the custom constraint here (lines 10–12 of
mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig):"x-unique": [ "title" ],- Please confirm that your MDMS validator applies
x-uniqueat the intended scope (the root-level array for this master) and that usingtitleas the de-duplication key is correct (many other masters usecode).mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig (4)
35-48: Confirm component availability and prop contract"PrivacyComponent" implies a FE component render path. Please verify:
- The renderer maps type: "component" to this component,
- customProps.module: "HCM" matches what PrivacyComponent expects,
- withoutLabel: true is respected by the renderer.
If this config is consumed in another repo, ensure the FE is updated in tandem.
1-93: Overall LGTM on structure; just address the validation and asset hygiene nitsThe configuration is coherent and aligns with the new schema. Once the above checks land, this should be merge-ready.
1-93: MDMS Masters Verification for HCM/Admin Console v0.5Excellent addition of the login config and schema. I’ve confirmed the presence of all relevant MDMS masters under
HCM/Admin Console v0.5:
appLink master
- Schema:
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppLink- Data:
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppLinkNew UI masters (each has both Schema and Data files):
commonHCMUiConfig.LoginConfigcommonHCMUiConfig.MasterLandingScreencommonHCMUiConfig.PrivacyPolicycommonUiConfig.HelpTutorialPlease execute your standard MDMS validation suite to ensure all schema/data pairs pass without errors.
1-7: Localisation keys verifiedAll three keys referenced in
commonHCMUiConfig.LoginConfig—CORE_COMMON_LOGIN,CORE_COMMON_CONTINUE, andCORE_COMMON_FORGOT_PASSWORD—are present in the localisation masters underlocalisation/(e.g.localisation/consolidated/en_IN/rainmaker-common.json,localisation/HCM/V1.8/..., etc.). No missing keys were detected.
| { | ||
| "texts": { | ||
| "header": "CORE_COMMON_LOGIN", | ||
| "submitButtonLabel": "CORE_COMMON_CONTINUE", | ||
| "secondaryButtonLabel": "CORE_COMMON_FORGOT_PASSWORD" | ||
| }, | ||
| "title": "login", | ||
| "inputs": [ | ||
| { | ||
| "key": "username", | ||
| "type": "text", | ||
| "label": "CORE_LOGIN_USERNAME", | ||
| "populators": { | ||
| "name": "username", | ||
| "error": "ERR_USERNAME_REQUIRED", | ||
| "validation": { | ||
| "required": true | ||
| } | ||
| }, | ||
| "isMandatory": true | ||
| }, | ||
| { | ||
| "key": "password", | ||
| "type": "password", | ||
| "label": "CORE_LOGIN_PASSWORD", | ||
| "populators": { | ||
| "name": "password", | ||
| "error": "ERR_PASSWORD_REQUIRED", | ||
| "validation": { | ||
| "required": true | ||
| } | ||
| }, | ||
| "isMandatory": true | ||
| }, | ||
| { | ||
| "key": "check", | ||
| "type": "component", | ||
| "disable": false, | ||
| "component": "PrivacyComponent", | ||
| "populators": { | ||
| "name": "check" | ||
| }, | ||
| "customProps": { | ||
| "module": "HCM" | ||
| }, | ||
| "isMandatory": true, | ||
| "withoutLabel": true | ||
| } | ||
| ], | ||
| "bannerImages": [ | ||
| { | ||
| "id": 1, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pageone.png", | ||
| "title": "CORE_HCM_TITLE_ONE", | ||
| "description": "CORE_HCM_DESCRIPTION_ONE" | ||
| }, | ||
| { | ||
| "id": 2, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pagetwo.png", | ||
| "title": "CORE_HCM_TITLE_SEVEN", | ||
| "description": "CORE_HCM_DESCRIPTION_SEVEN" | ||
| }, | ||
| { | ||
| "id": 3, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pagethree.png", | ||
| "title": "CORE_HCM_TITLE_TWO", | ||
| "description": "CORE_HCM_DESCRIPTION_TWO" | ||
| }, | ||
| { | ||
| "id": 4, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/pagefour.jpeg", | ||
| "title": "CORE_HCM_TITLE_THREE", | ||
| "description": "CORE_HCM_DESCRIPTION_THREE" | ||
| }, | ||
| { | ||
| "id": 5, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pageone.png", | ||
| "title": "CORE_HCM_TITLE_FOUR", | ||
| "description": "CORE_HCM_DESCRIPTION_FOUR" | ||
| }, | ||
| { | ||
| "id": 6, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/pagefive.jpeg", | ||
| "title": "CORE_HCM_TITLE_FIVE", | ||
| "description": "CORE_HCM_DESCRIPTION_FIVE" | ||
| }, | ||
| { | ||
| "id": 7, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pagetwo.png", | ||
| "title": "CORE_HCM_TITLE_SIX", | ||
| "description": "CORE_HCM_DESCRIPTION_SIX" | ||
| } | ||
| ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
End-to-end validation: ensure data conforms to the schema in this PR
Quick local contract test to catch schema/data drift.
🏁 Script executed:
#!/bin/bash
set -euo pipefail
pip -q install jsonschema >/dev/null
python - <<'PY'
import json, pathlib, sys
from jsonschema import Draft7Validator
schema_path = pathlib.Path('mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig')
data_path = pathlib.Path('mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig')
schema = json.loads(schema_path.read_text())
data = json.loads(data_path.read_text())
v = Draft7Validator(schema)
errors = sorted(v.iter_errors(data), key=lambda e: (list(e.path), e.message))
if errors:
print("Schema validation errors:")
for e in errors:
print(f" - at {list(e.path)}: {e.message}")
sys.exit(1)
print("OK: Data validates against schema.")
PYLength of output: 459
Action Required: Update and Re-run the JSON schema validation script
The previous validation attempt failed with a JSONDecodeError (“Extra data”), indicating the loader was reading the wrong files or mis-parsing them. Please use the exact .json filenames and add a preliminary syntax check before schema validation:
• Verify that both files exist with the .json extension in the specified directories.
• If the script still errors, please manually inspect the JSON for trailing commas or concatenated objects.
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
# 1. Ensure JSON syntax is valid
for file in \
"mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig.json" \
"mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig.json"; do
if ! jq empty "$file"; then
echo "❌ Invalid JSON in $file"
exit 1
fi
done
# 2. Install jsonschema if not already present
pip install --quiet jsonschema
# 3. Validate data against schema
python - <<'PYTHON'
import json, pathlib, sys
from jsonschema import Draft7Validator
schema_path = pathlib.Path("mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig.json")
data_path = pathlib.Path("mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig.json")
schema = json.loads(schema_path.read_text())
data = json.loads(data_path.read_text())
validator = Draft7Validator(schema)
errors = sorted(validator.iter_errors(data), key=lambda e: (list(e.path), e.message))
if errors:
print("❌ Schema validation errors:")
for e in errors:
print(f" - at {list(e.path)}: {e.message}")
sys.exit(1)
print("✅ OK: Data conforms to schema.")
PYTHONLength of output: 585
The schema and data files aren’t matching the expected filenames/paths. Let’s list the actual files in those directories to correct the validation script:
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "Contents of mdms/HCM/Admin Console v0.5/Schemas/:"
ls -1 "mdms/HCM/Admin Console v0.5/Schemas/"
echo ""
echo "Contents of mdms/HCM/Admin Console v0.5/Data/:"
ls -1 "mdms/HCM/Admin Console v0.5/Data/"Length of output: 1526
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "Parsing Data file with jq:"
jq . "mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig" || true
echo ""
echo "Parsing Schema file with jq:"
jq . "mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig" || true
echo ""
echo "Lines 80-120 of Data file:"
sed -n '80,120p' "mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig"Length of output: 6136
Listing the full JSON payload to pinpoint the malformed content:
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "----- First 50 lines of Data/commonHCMUiConfig.LoginConfig -----"
head -n 50 "mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig" || true
echo ""
echo "----- Last 50 lines of Data/commonHCMUiConfig.LoginConfig -----"
tail -n 50 "mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig" || trueLength of output: 4828
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
# Show total number of lines in the Data file
wc -l "mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig"
echo ""
echo "Last 20 lines with line numbers:"
nl -ba "mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig" | tail -n 20Length of output: 424
Please print the entire Data file with line numbers to pinpoint the JSON syntax issue:
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
awk '{ printf("%3d %s\n", NR, $0) }' "mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig"Length of output: 4673
Fix JSON syntax in commonHCMUiConfig.LoginConfig
The data file at
mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig
is not valid JSON—the trailing comma and missing closing brace at the end cause a parse error:
• At line 94:
94 | },
That comma is invalid without another sibling following it.
• There’s no final } to close the top-level object.
Please update the last lines to remove the comma and properly close the object. For example:
--- mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig
@@ (around line 90)
- }
- ],
- "bannerImages": [
+ }
+ ],
+ "bannerImages": [
... (banner items) ...
- ]
- },
+ ]
+ }After saving those changes, re-run your JSON syntax check and the schema validation script to confirm everything passes.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig around lines 1
to 94, the JSON is invalid due to a trailing comma on the last bannerImages
element and a missing closing brace for the top-level object; remove the
trailing comma after the final banner object and add the missing closing
brace(s) to properly terminate the top-level object (then save and re-run
JSON/schema validation).
| "bannerImages": [ | ||
| { | ||
| "id": 1, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pageone.png", | ||
| "title": "CORE_HCM_TITLE_ONE", | ||
| "description": "CORE_HCM_DESCRIPTION_ONE" | ||
| }, | ||
| { | ||
| "id": 2, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pagetwo.png", | ||
| "title": "CORE_HCM_TITLE_SEVEN", | ||
| "description": "CORE_HCM_DESCRIPTION_SEVEN" | ||
| }, | ||
| { | ||
| "id": 3, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pagethree.png", | ||
| "title": "CORE_HCM_TITLE_TWO", | ||
| "description": "CORE_HCM_DESCRIPTION_TWO" | ||
| }, | ||
| { | ||
| "id": 4, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/pagefour.jpeg", | ||
| "title": "CORE_HCM_TITLE_THREE", | ||
| "description": "CORE_HCM_DESCRIPTION_THREE" | ||
| }, | ||
| { | ||
| "id": 5, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pageone.png", | ||
| "title": "CORE_HCM_TITLE_FOUR", | ||
| "description": "CORE_HCM_DESCRIPTION_FOUR" | ||
| }, | ||
| { | ||
| "id": 6, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/pagefive.jpeg", | ||
| "title": "CORE_HCM_TITLE_FIVE", | ||
| "description": "CORE_HCM_DESCRIPTION_FIVE" | ||
| }, | ||
| { | ||
| "id": 7, | ||
| "image": "https://egov-dev-assets.s3.ap-south-1.amazonaws.com/hcm/banner/Pagetwo.png", | ||
| "title": "CORE_HCM_TITLE_SIX", | ||
| "description": "CORE_HCM_DESCRIPTION_SIX" | ||
| } | ||
| ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Banner images: duplicated assets/dev-bucket usage; check for environment neutrality and content intent
- Duplicates: id 1 and 5 both use Pageone.png; id 2 and 7 both use Pagetwo.png. If intentional, ignore; if not, replace or diversify.
- Bucket: URLs point to egov-dev-assets. For master branch data, confirm that environment-aware overrides exist (dev vs prod) or move to env-neutral assets.
- Case sensitivity: Mixed casing in file names (Pageone.png vs pagefour.jpeg) can be brittle on case-sensitive backends; standardize if possible.
Run these checks to catch accidental duplication and dev-bucket usage:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
DATA='mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig'
echo "Duplicate image URLs (if any):"
jq -r '.bannerImages[].image' "$DATA" | sort | uniq -d
echo
echo "Non-HTTPS or malformed URLs (should be empty):"
jq -r '.bannerImages[].image' "$DATA" | awk '!/^https:\/\//'
echo
echo "Dev bucket references (should be reviewed):"
jq -r '.bannerImages[].image' "$DATA" | rg -n 'egov-dev-assets' - || trueLength of output: 487
🏁 Script executed:
#!/bin/bash
set -euo pipefail
DATA='mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig'
echo "Duplicate image URLs (if any):"
grep -Eo 'https://[^\" ]+' "$DATA" | sort | uniq -d || true
echo
echo "Dev bucket references (should be reviewed):"
grep -n 'egov-dev-assets' "$DATA" || true
echo
echo "Filename occurrences (to spot mixed casing):"
grep -Eo 'https://[^\" ]+' "$DATA" | sed -E 's#.*/##' | sort | uniq -cLength of output: 1766
Review Image Configuration: Duplicate Assets, Dev Bucket Usage, and Filename Casing
Please address the following issues in mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig (lines 50–93):
-
Duplicate banner images detected:
- IDs 1 & 5 both reference
Pageone.png - IDs 2 & 7 both reference
Pagetwo.png
If these duplicates are unintended, replace them with the correct, unique assets.
- IDs 1 & 5 both reference
-
All image URLs point to the development bucket (
egov-dev-assets.s3.ap-south-1.amazonaws.com):- Ensure that you either reference an environment-neutral asset host or provide production overrides for the master branch.
-
Inconsistent filename casing:
- Uppercase-initial names (
Pageone.png,Pagetwo.png,Pagethree.png) alongside lowercase (pagefour.jpeg,pagefive.jpeg) can break on case-sensitive filesystems. - Standardize naming (e.g., all lowercase or all uppercase) and update references accordingly.
- Uppercase-initial names (
🤖 Prompt for AI Agents
In mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.LoginConfig around lines
50–93, the bannerImages section contains duplicate assets (IDs 1 & 5 both use
Pageone.png; IDs 2 & 7 both use Pagetwo.png), uses the development S3 bucket for
all URLs, and has inconsistent filename casing (e.g., Pageone.png vs
pagefour.jpeg) which can break on case-sensitive systems; update the duplicated
entries to reference the intended unique assets or remove duplicates, switch
image hosts to an environment-neutral or production-ready asset host (or add a
mechanism for prod overrides), and normalize filenames consistently (choose
lower- or upper-case) and update all references to match.
| "inputs": { | ||
| "type": "array", | ||
| "items": { | ||
| "type": "object", | ||
| "required": [ | ||
| "key", | ||
| "type" | ||
| ], | ||
| "properties": { | ||
| "key": { | ||
| "type": "string" | ||
| }, | ||
| "type": { | ||
| "type": "string" | ||
| }, | ||
| "label": { | ||
| "type": "string" | ||
| }, | ||
| "disable": { | ||
| "type": "boolean" | ||
| }, | ||
| "component": { | ||
| "type": "string" | ||
| }, | ||
| "populators": { | ||
| "type": "object", | ||
| "properties": { | ||
| "name": { | ||
| "type": "string" | ||
| }, | ||
| "error": { | ||
| "type": "string" | ||
| }, | ||
| "validation": { | ||
| "type": "object", | ||
| "properties": { | ||
| "required": { | ||
| "type": "boolean" | ||
| } | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "customProps": { | ||
| "type": "object", | ||
| "properties": { | ||
| "module": { | ||
| "type": "string" | ||
| } | ||
| } | ||
| }, | ||
| "isMandatory": { | ||
| "type": "boolean" | ||
| }, | ||
| "withoutLabel": { | ||
| "type": "boolean" | ||
| } | ||
| } | ||
| } | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Constrain inputs: enum for type, sensible defaults, required populators.name, conditional requirement for component, and no extra fields
This reduces misconfiguration and makes validation stricter where it helps.
- "inputs": {
- "type": "array",
+ "inputs": {
+ "type": "array",
+ "minItems": 2,
"items": {
- "type": "object",
+ "type": "object",
+ "additionalProperties": false,
"required": [
"key",
"type"
],
"properties": {
@@
- "type": {
- "type": "string"
- },
+ "type": {
+ "type": "string",
+ "enum": ["text", "password", "component"]
+ },
@@
- "disable": {
- "type": "boolean"
- },
+ "disable": {
+ "type": "boolean",
+ "default": false
+ },
@@
- "populators": {
- "type": "object",
- "properties": {
+ "populators": {
+ "type": "object",
+ "required": ["name"],
+ "additionalProperties": false,
+ "properties": {
@@
- "validation": {
- "type": "object",
- "properties": {
+ "validation": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
"required": {
"type": "boolean"
}
}
}
}
},
- "customProps": {
- "type": "object",
- "properties": {
+ "customProps": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
"module": {
"type": "string"
}
}
},
@@
}
+ ,
+ "allOf": [
+ {
+ "if": { "properties": { "type": { "const": "component" } }, "required": ["type"] },
+ "then": { "required": ["component"] }
+ }
+ ]
}
},📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "inputs": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "required": [ | |
| "key", | |
| "type" | |
| ], | |
| "properties": { | |
| "key": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "type": "string" | |
| }, | |
| "label": { | |
| "type": "string" | |
| }, | |
| "disable": { | |
| "type": "boolean" | |
| }, | |
| "component": { | |
| "type": "string" | |
| }, | |
| "populators": { | |
| "type": "object", | |
| "properties": { | |
| "name": { | |
| "type": "string" | |
| }, | |
| "error": { | |
| "type": "string" | |
| }, | |
| "validation": { | |
| "type": "object", | |
| "properties": { | |
| "required": { | |
| "type": "boolean" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "customProps": { | |
| "type": "object", | |
| "properties": { | |
| "module": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "isMandatory": { | |
| "type": "boolean" | |
| }, | |
| "withoutLabel": { | |
| "type": "boolean" | |
| } | |
| } | |
| } | |
| }, | |
| "inputs": { | |
| "type": "array", | |
| "minItems": 2, | |
| "items": { | |
| "type": "object", | |
| "additionalProperties": false, | |
| "required": [ | |
| "key", | |
| "type" | |
| ], | |
| "properties": { | |
| "key": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "type": "string", | |
| "enum": [ | |
| "text", | |
| "password", | |
| "component" | |
| ] | |
| }, | |
| "label": { | |
| "type": "string" | |
| }, | |
| "disable": { | |
| "type": "boolean", | |
| "default": false | |
| }, | |
| "component": { | |
| "type": "string" | |
| }, | |
| "populators": { | |
| "type": "object", | |
| "required": [ | |
| "name" | |
| ], | |
| "additionalProperties": false, | |
| "properties": { | |
| "name": { | |
| "type": "string" | |
| }, | |
| "error": { | |
| "type": "string" | |
| }, | |
| "validation": { | |
| "type": "object", | |
| "additionalProperties": false, | |
| "properties": { | |
| "required": { | |
| "type": "boolean" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "customProps": { | |
| "type": "object", | |
| "additionalProperties": false, | |
| "properties": { | |
| "module": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "isMandatory": { | |
| "type": "boolean" | |
| }, | |
| "withoutLabel": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "allOf": [ | |
| { | |
| "if": { | |
| "properties": { | |
| "type": { "const": "component" } | |
| }, | |
| "required": ["type"] | |
| }, | |
| "then": { | |
| "required": ["component"] | |
| } | |
| } | |
| ] | |
| } | |
| }, |
🤖 Prompt for AI Agents
In mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig around
lines 36-95, tighten the inputs schema by: add an enum for the input "type"
(e.g. ["text","password","email","number","select","checkbox","custom"]) and set
a sensible default (e.g. "text"); mark populators.name as required inside
populators; add conditional validation so that when type is "custom" (or any
type that needs a custom component) the "component" property becomes required
using an if/then; add additionalProperties: false on the inputs item object (and
on nested objects like populators and customProps) to forbid extra fields; and
add default values for boolean flags (disable, isMandatory, withoutLabel) to
false to make behavior explicit.
| "bannerImages": { | ||
| "type": "array", | ||
| "items": { | ||
| "type": "object", | ||
| "properties": { | ||
| "id": { | ||
| "type": "number" | ||
| }, | ||
| "image": { | ||
| "type": "string" | ||
| }, | ||
| "title": { | ||
| "type": "string" | ||
| }, | ||
| "description": { | ||
| "type": "string" | ||
| } | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Banner images: use integer id, enforce URI format, and basic non-empty checks; also disallow extra fields
This guards against common data slips and makes image links verifiable as URIs.
- "bannerImages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
+ "bannerImages": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
- "id": {
- "type": "number"
- },
+ "id": {
+ "type": "integer",
+ "minimum": 1
+ },
- "image": {
- "type": "string"
- },
+ "image": {
+ "type": "string",
+ "format": "uri",
+ "minLength": 1
+ },
- "title": {
- "type": "string"
- },
+ "title": {
+ "type": "string",
+ "minLength": 1
+ },
- "description": {
- "type": "string"
- }
+ "description": {
+ "type": "string",
+ "minLength": 1
+ }
}
}
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "bannerImages": { | |
| "type": "array", | |
| "items": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "number" | |
| }, | |
| "image": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| "bannerImages": { | |
| "type": "array", | |
| "minItems": 1, | |
| "items": { | |
| "type": "object", | |
| "additionalProperties": false, | |
| "properties": { | |
| "id": { | |
| "type": "integer", | |
| "minimum": 1 | |
| }, | |
| "image": { | |
| "type": "string", | |
| "format": "uri", | |
| "minLength": 1 | |
| }, | |
| "title": { | |
| "type": "string", | |
| "minLength": 1 | |
| }, | |
| "description": { | |
| "type": "string", | |
| "minLength": 1 | |
| } | |
| } | |
| } | |
| } |
🤖 Prompt for AI Agents
In mdms/HCM/Admin Console v0.5/Schemas/commonHCMUiConfig.LoginConfig around
lines 96 to 115, the bannerImages item schema should be tightened: change "id"
type from "number" to "integer", add "format": "uri" to the "image" property,
add "minLength": 1 to "title" and "description", declare the required fields
(e.g., ["id","image"]) as appropriate, and set "additionalProperties": false on
the banner image object (and optionally on bannerImages items) to disallow extra
fields; update the JSON Schema accordingly so inputs must use integer ids, valid
URI image strings, non-empty text, and no unexpected properties.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (9)
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig (9)
4-4: Prefer https $schema and add a stable $idSmall metadata polish: use the canonical https schema URL and set an $id to make dereferencing predictable in tooling.
- "$schema": "http://json-schema.org/draft-07/schema#", + "$schema": "https://json-schema.org/draft-07/schema#", + "$id": "urn:mdms:HCM-ADMIN-CONSOLE.FormConfig"
27-29: Use integer type for 'order' fields with a lower boundOrdering indices are integral and commonly start at 0 or 1. Tightening the type avoids accidental floats.
- "order": { - "type": "number" - }, + "order": { + "type": "integer", + "minimum": 0 + }, - "order": { - "type": "number" - }, + "order": { + "type": "integer", + "minimum": 0 + }, - "order": { - "type": "number" - }, + "order": { + "type": "integer", + "minimum": 0 + },Also applies to: 50-52, 101-103
30-39: Strengthen 'pages' array constraints
- Add minItems: 1 to ensure at least one page exists in a FormConfig.
- Consider unique constraints on page identifiers (enforced at runtime) and make the page object closed via additionalProperties: false to catch stray keys early.
"pages": { - "type": "array", + "type": "array", + "minItems": 1, "items": { "type": "object", "required": [ "page", "label", "order", "properties" ], "properties": { ... - } + }, + "additionalProperties": false } },
44-46: Ambiguity: page-level property named "type"Page objects also have a property called “type” (Line 44). Given “type” is overloaded throughout the schema (JSON Schema’s type, field.type, page.type), consider clarifying this to “pageType” or “layoutType” to avoid confusion during authoring and tooling.
73-80: Relax required fields for form properties; make 'fieldName' required and defaults explicitRequiring format and hidden on every field is heavy and noisy. Typically:
- fieldName should be required (stable key for data binding).
- hidden, readOnly, includeInForm, includeInSummary etc. should be optional with sensible defaults.
- "required": [ - "type", - "label", - "order", - "format", - "hidden" - ], + "required": [ + "type", + "label", + "order", + "fieldName" + ],
125-139: Set sensible defaults for booleans and constrain fieldNameDefaults reduce boilerplate and keep configs readable. Also, constrain fieldName for safe identifiers.
- "fieldName": { - "type": "string" - }, + "fieldName": { + "type": "string", + "pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$" + }, - "hidden": { - "type": "boolean" - }, + "hidden": { + "type": "boolean", + "default": false + }, - "readOnly": { - "type": "boolean" - }, + "readOnly": { + "type": "boolean", + "default": false + }, - "required": { - "type": "boolean" - }, + "required": { + "type": "boolean", + "default": false + }, - "deleteFlag": { - "type": "boolean" - }, + "deleteFlag": { + "type": "boolean", + "default": false + }, - "systemDate": { - "type": "boolean" - }, + "systemDate": { + "type": "boolean", + "default": false + }, - "includeInForm": { - "type": "boolean" - }, + "includeInForm": { + "type": "boolean", + "default": true + }, - "isMultiSelect": { - "type": "boolean" - }, + "isMultiSelect": { + "type": "boolean", + "default": false + }, - "includeInSummary": { - "type": "boolean" - }, + "includeInSummary": { + "type": "boolean", + "default": false + },Also applies to: 158-166
80-97: Close nested objects and tighten constraints for validations and conditions
- Close field item objects with additionalProperties: false to prevent typos.
- validations: add minItems, require type, and close the validation object.
- autoFillCondition/visibilityCondition: require expression and close the objects.
"properties": { ... - } + }, + "additionalProperties": false } - "validations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "value": {}, - "message": { - "type": "string" - } - } - } - }, + "validations": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": ["type"], + "properties": { + "type": { "type": "string" }, + "value": {}, + "message": { "type": "string" } + }, + "additionalProperties": false + } + }, - "autoFillCondition": { - "type": "array", - "items": { - "type": "object", - "properties": { - "value": {}, - "expression": { - "type": "string" - } - } - } - }, + "autoFillCondition": { + "type": "array", + "items": { + "type": "object", + "required": ["expression"], + "properties": { + "value": {}, + "expression": { "type": "string" } + }, + "additionalProperties": false + } + }, - "visibilityCondition": { - "type": "object", - "properties": { - "expression": { - "type": "string" - } - } - } + "visibilityCondition": { + "type": "object", + "required": ["expression"], + "properties": { + "expression": { "type": "string" } + }, + "additionalProperties": false + }Note: consider further constraining validations.type to an allowed set and adding conditional rules (e.g., if systemDate = true, then format ∈ {"date","date-time"}), but that depends on conventions used elsewhere in this module.
Also applies to: 140-154, 167-186
205-210: Version should be an integer; set default for disabledA version number is discrete; also set a default for disabled = false.
- "version": { - "type": "number" - }, + "version": { + "type": "integer", + "minimum": 1 + }, - "disabled": { - "type": "boolean" - } + "disabled": { + "type": "boolean", + "default": false + }
211-212: Close the root schema with additionalProperties: falsePrevents silent acceptance of misspelled or unsupported top-level fields.
- } - } + }, + "additionalProperties": false + }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig(1 hunks)mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate
🔇 Additional comments (1)
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig (1)
11-14: Confirm MDMS understands the custom "x-unique" keyword at this locationIf MDMS uniqueness is enforced via a different keyword or at a wrapper/envelope level, this might be ignored. Please confirm the loader that validates these schemas recognizes x-unique inside the JSON Schema root, or move/rename it to the convention MDMS expects.
| { | ||
| "type": "object", | ||
| "title": "Generated schema for Root", | ||
| "$schema": "http://json-schema.org/draft-07/schema#", | ||
| "required": [ | ||
| "name", | ||
| "pages", | ||
| "project", | ||
| "version" | ||
| ], | ||
| "x-unique": [ | ||
| "name", | ||
| "project" | ||
| ], | ||
| "properties": { | ||
| "name": { | ||
| "enum": [ | ||
| "REGISTRATIONFLOW", | ||
| "INVENTORYFLOW", | ||
| "ATTENDANCEFLOW", | ||
| "COMPLAINTFLOW", | ||
| "DELIVERYFLOW", | ||
| "HFREFERALFLOW" | ||
| ], | ||
| "type": "string" | ||
| }, | ||
| "order": { | ||
| "type": "number" | ||
| }, | ||
| "pages": { | ||
| "type": "array", | ||
| "items": { | ||
| "type": "object", | ||
| "required": [ | ||
| "page", | ||
| "label", | ||
| "order", | ||
| "properties" | ||
| ], | ||
| "properties": { | ||
| "page": { | ||
| "type": "string" | ||
| }, | ||
| "type": { | ||
| "type": "string" | ||
| }, | ||
| "label": { | ||
| "type": "string" | ||
| }, | ||
| "order": { | ||
| "type": "number" | ||
| }, | ||
| "navigateTo": { | ||
| "type": "object", | ||
| "required": [], | ||
| "properties": { | ||
| "name": { | ||
| "type": "string" | ||
| }, | ||
| "type": { | ||
| "enum": [ | ||
| "template", | ||
| "form" | ||
| ], | ||
| "type": "string" | ||
| } | ||
| } | ||
| }, | ||
| "properties": { | ||
| "type": "array", | ||
| "items": { | ||
| "type": "object", | ||
| "required": [ | ||
| "type", | ||
| "label", | ||
| "order", | ||
| "format", | ||
| "hidden" | ||
| ], | ||
| "properties": { | ||
| "type": { | ||
| "type": "string" | ||
| }, | ||
| "enums": { | ||
| "type": "array", | ||
| "items": { | ||
| "type": "object", | ||
| "properties": { | ||
| "code": { | ||
| "type": "string" | ||
| }, | ||
| "name": { | ||
| "type": "string" | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "label": { | ||
| "type": "string" | ||
| }, | ||
| "order": { | ||
| "type": "number" | ||
| }, | ||
| "format": { | ||
| "type": "string" | ||
| }, | ||
| "hidden": { | ||
| "type": "boolean" | ||
| }, | ||
| "tooltip": { | ||
| "type": "string" | ||
| }, | ||
| "helpText": { | ||
| "type": "string" | ||
| }, | ||
| "infoText": { | ||
| "type": "string" | ||
| }, | ||
| "readOnly": { | ||
| "type": "boolean" | ||
| }, | ||
| "required": { | ||
| "type": "boolean" | ||
| }, | ||
| "fieldName": { | ||
| "type": "string" | ||
| }, | ||
| "deleteFlag": { | ||
| "type": "boolean" | ||
| }, | ||
| "innerLabel": { | ||
| "type": "string" | ||
| }, | ||
| "schemaCode": { | ||
| "type": "string" | ||
| }, | ||
| "systemDate": { | ||
| "type": "boolean" | ||
| }, | ||
| "validations": { | ||
| "type": "array", | ||
| "items": { | ||
| "type": "object", | ||
| "properties": { | ||
| "type": { | ||
| "type": "string" | ||
| }, | ||
| "value": {}, | ||
| "message": { | ||
| "type": "string" | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "errorMessage": { | ||
| "type": "string" | ||
| }, | ||
| "includeInForm": { | ||
| "type": "boolean" | ||
| }, | ||
| "isMultiSelect": { | ||
| "type": "boolean" | ||
| }, | ||
| "includeInSummary": { | ||
| "type": "boolean" | ||
| }, | ||
| "autoFillCondition": { | ||
| "type": "array", | ||
| "items": { | ||
| "type": "object", | ||
| "properties": { | ||
| "value": {}, | ||
| "expression": { | ||
| "type": "string" | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "visibilityCondition": { | ||
| "type": "object", | ||
| "properties": { | ||
| "expression": { | ||
| "type": "string" | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "actionLabel": { | ||
| "type": "string" | ||
| }, | ||
| "description": { | ||
| "type": "string" | ||
| } | ||
| } | ||
| } | ||
| }, | ||
| "project": { | ||
| "type": "string" | ||
| }, | ||
| "summary": { | ||
| "type": "boolean" | ||
| }, | ||
| "version": { | ||
| "type": "number" | ||
| }, | ||
| "disabled": { | ||
| "type": "boolean" | ||
| } | ||
| } | ||
| } No newline at end of file |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Cross‑master alignment checks: flows, app links, and login config
Given reviewer comments on this PR: please verify
- The enum values for name (e.g., COMPLAINTFLOW, REGISTRATIONFLOW, etc.) exist and are consistently referenced in AppModule/AppLink masters and templates.
- The AppLink master is updated for these flows and points to screens/routes introduced in this release.
- The login configuration data and its schema are present and linked, if this FormConfig participates in login/setup paths.
Run this script from the repo root to spot inconsistencies quickly:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Check for enum spelling consistency (HFREFERAL vs HFREFERRAL) =="
rg -n -C1 -i 'HFREFER?RALFLOW' mdms || true
echo -e "\n== Locate AppLink and verify presence =="
fd -H -t f -i 'HCM-ADMIN-CONSOLE.AppLink*' mdms || true
rg -n 'HCM-ADMIN-CONSOLE\.AppLink|appLink' mdms || true
echo -e "\n== Check masters referencing COMPLAINTFLOW =="
rg -n 'COMPLAINTFLOW' mdms || true
echo -e "\n== Check for login-related configs/schemas mentioned by reviewers =="
rg -n -i 'login|LoginConfig|HCM-LOGIN|AdminLogin' mdms || true
echo -e "\n== Sanity: other masters introduced in this PR that should align with FormConfig types =="
fd -H -t f -i 'HCM-ADMIN-CONSOLE.*(FormConfigTemplate|FieldTypeMappingConfig|AppModuleSchema)*' mdms || trueLength of output: 24041
I’d like to verify that each of the new flow enums is actually wired up in both the AppLink and AppModuleSchema masters. Let’s search for all six flow names in those two Data files:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Check for flow enum names in Data/HCM-ADMIN-CONSOLE.AppLink =="
rg -n 'REGISTRATIONFLOW|INVENTORYFLOW|ATTENDANCEFLOW|COMPLAINTFLOW|DELIVERYFLOW|HFREFERALFLOW' "mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppLink"
echo -e "\n== Check for flow enum names in Data/HCM-ADMIN-CONSOLE.AppModuleSchema =="
rg -n 'REGISTRATIONFLOW|INVENTORYFLOW|ATTENDANCEFLOW|COMPLAINTFLOW|DELIVERYFLOW|HFREFERALFLOW' "mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppModuleSchema"Length of output: 318
Missing flow enum references in AppLink & AppModuleSchema
The six new flow enums added to FormConfig (registration, inventory, attendance, complaint, delivery, and HFREFERAL) are not referenced in the corresponding Data masters, which will break navigation:
• mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppLink
• mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppModuleSchema
Please add entries for each of the following values in both masters, pointing to their new screens/routes:
- REGISTRATIONFLOW
- INVENTORYFLOW
- ATTENDANCEFLOW
- COMPLAINTFLOW
- DELIVERYFLOW
- HFREFERALFLOW
Also verify the spelling of HFREFERALFLOW against any routing or template names—“referral” is typically spelled with two “r”s—to avoid potential mismatches.
🤖 Prompt for AI Agents
In mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig lines 1-212
and corresponding Data masters mdms/HCM/Admin Console
v0.5/Data/HCM-ADMIN-CONSOLE.AppLink and mdms/HCM/Admin Console
v0.5/Data/HCM-ADMIN-CONSOLE.AppModuleSchema, the six new flow enum values
(REGISTRATIONFLOW, INVENTORYFLOW, ATTENDANCEFLOW, COMPLAINTFLOW, DELIVERYFLOW,
HFREFERALFLOW) introduced in FormConfig are not present in the AppLink and
AppModuleSchema data files; add entries for each of these six values in both
Data masters mapping each enum to the correct screen/route (use the same keys as
the enum names and point to their respective route/template identifiers), and
verify/normalize the spelling of HFREFERALFLOW to match the actual
route/template name (likely HFREFERRALFLOW) before committing to avoid routing
mismatches.
| "enum": [ | ||
| "REGISTRATIONFLOW", | ||
| "INVENTORYFLOW", | ||
| "ATTENDANCEFLOW", | ||
| "COMPLAINTFLOW", | ||
| "DELIVERYFLOW", | ||
| "HFREFERALFLOW" | ||
| ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Possible typo in enum: "HFREFERALFLOW" → "HFREFERRALFLOW"
“Referral” is typically spelled with two r’s. If other masters and data use the correct spelling, this mismatch will break lookups and joins.
- "HFREFERALFLOW"
+ "HFREFERRALFLOW"As a safety check, please verify occurrences across the PR to ensure consistent spelling everywhere (see script below in a separate comment).
🏁 Script executed:
#!/usr/bin/env bash
# Search for all occurrences of the potentially misspelled and corrected enum values
grep -R "\"HFREFERALFLOW\"" -n .
grep -R "\"HFREFERRALFLOW\"" -n .Length of output: 298
Fix typo in enum values across schema files
The enum value “HFREFERALFLOW” is misspelled—it should be “HFREFERRALFLOW” (with two r’s). This typo appears in two schema files and will break any lookups or joins against correctly spelled references.
Please update both occurrences:
• mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig (line 23)
• mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate (line 23)
Suggested diff for each file:
- "HFREFERALFLOW"
+ "HFREFERRALFLOW"After applying, run a global search for “HFREFERALFLOW” to ensure no remaining references, and verify that any dependent code, tests, or data definitions are updated accordingly.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "enum": [ | |
| "REGISTRATIONFLOW", | |
| "INVENTORYFLOW", | |
| "ATTENDANCEFLOW", | |
| "COMPLAINTFLOW", | |
| "DELIVERYFLOW", | |
| "HFREFERALFLOW" | |
| ], | |
| "enum": [ | |
| "REGISTRATIONFLOW", | |
| "INVENTORYFLOW", | |
| "ATTENDANCEFLOW", | |
| "COMPLAINTFLOW", | |
| "DELIVERYFLOW", | |
| "HFREFERRALFLOW" | |
| ], |
🤖 Prompt for AI Agents
In mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig around lines
17 to 24 (and also update mdms/HCM/Admin Console
v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate at the same lines), replace
the misspelled enum value "HFREFERALFLOW" with the correct "HFREFERRALFLOW";
after editing both files, run a global repository search for "HFREFERALFLOW" to
remove any remaining occurrences and update any dependent code, tests, or data
definitions to use the corrected "HFREFERRALFLOW".
| "navigateTo": { | ||
| "type": "object", | ||
| "required": [], | ||
| "properties": { | ||
| "name": { | ||
| "type": "string" | ||
| }, | ||
| "type": { | ||
| "enum": [ | ||
| "template", | ||
| "form" | ||
| ], | ||
| "type": "string" | ||
| } | ||
| } | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: empty required list in navigateTo makes the constraint a no-op
Currently required: [] is effectively no constraint. If navigateTo is present, both name and type should be required. Recommend also closing the object.
"navigateTo": {
"type": "object",
- "required": [],
+ "required": ["name", "type"],
"properties": {
"name": {
"type": "string"
},
"type": {
"enum": [
"template",
"form"
],
"type": "string"
}
- }
+ },
+ "additionalProperties": false
},📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "navigateTo": { | |
| "type": "object", | |
| "required": [], | |
| "properties": { | |
| "name": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "enum": [ | |
| "template", | |
| "form" | |
| ], | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "navigateTo": { | |
| "type": "object", | |
| "required": ["name", "type"], | |
| "properties": { | |
| "name": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "enum": [ | |
| "template", | |
| "form" | |
| ], | |
| "type": "string" | |
| } | |
| }, | |
| "additionalProperties": false | |
| }, |
🤖 Prompt for AI Agents
In mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfig around lines
53 to 68, the navigateTo schema currently has "required": [] which is a no-op;
change it to require both fields by setting "required": ["name","type"] and
ensure the navigateTo object is properly closed (add the missing closing
brace/comma as needed) so that when navigateTo is present both name and type are
validated.
… for Complaints module
Summary by CodeRabbit
New Features
Chores