Skip to content

Conversation

@Shreya-egov
Copy link
Collaborator

@Shreya-egov Shreya-egov commented Aug 22, 2025

… for Complaints module

Summary by CodeRabbit

  • New Features

    • Configurable app modules, features, screen localisations, landing/navigation links, privacy policy, and login UI
    • Enhanced form builder: new field types, richer field properties panel, field-type mappings, templates, and details/cards for households/tasks/individuals
    • Campaign naming validation, app link support, user credential email template, and help/tutorial cards
  • Chores

    • Added comprehensive schemas and data seeds to power the above configurations and service definitions

@Shreya-egov Shreya-egov requested a review from a team as a code owner August 22, 2025 07:26
@Shreya-egov Shreya-egov requested review from GhanshyamRawat-eGov and removed request for a team August 22, 2025 07:26
@coderabbitai
Copy link

coderabbitai bot commented Aug 22, 2025

Walkthrough

Adds 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

Cohort / File(s) Summary of changes
Core App data & schemas
mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppLink, .../Data/HCM-ADMIN-CONSOLE.AppModuleSchema, .../Data/HCM-ADMIN-CONSOLE.AppScreenLocalisationConfig, .../Data/HCM-ADMIN-CONSOLE.CampaignNamingConvention, .../Data/HCM-ADMIN-CONSOLE.DETAILS_RENDERER_CONFIG, .../Data/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig, .../Data/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig, .../Data/HCM-ADMIN-CONSOLE.emailTemplate, .../Data/HCM-ADMIN-CONSOLE.schemas, mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AppLink, .../Schemas/HCM-ADMIN-CONSOLE.AppScreenLocalisationConfig, .../Schemas/HCM-ADMIN-CONSOLE.CampaignNamingConvention, .../Schemas/HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig, .../Schemas/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig, .../Schemas/HCM-ADMIN-CONSOLE.emailTemplate, .../Schemas/HCM-ADMIN-CONSOLE.FormConfig, .../Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate
Added numerous static JSON configuration files and matching Draft‑07 MDMS schema records covering app link, module/feature schema, screen localisation, campaign naming rules, details renderer, field properties panel config, field‑type mappings, email template references, and detailed form config/template schema definitions.
UI content, navigation & login
mdms/HCM/Admin Console v0.5/Data/commonHCMUiConfig.MasterLandingScreen, .../Data/commonHCMUiConfig.PrivacyPolicy, .../Data/commonUiConfig.HelpTutorial, .../Data/commonHCMUiConfig.LoginConfig, mdms/HCM/Admin Console v0.5/Schemas/commonUiConfig.HelpTutorial, .../Schemas/commonHCMUiConfig.LoginConfig
New UI assets and matching schemas: master/landing navigation links with role metadata, structured privacy policy content, help/tutorial items for campaign module, and login screen configuration plus validation schemas.
Service seed data
mdms/HCM/Admin Console v0.5/Data/RAINMAKER-PGR.ServiceDefs
Adds eight RAINMAKER‑PGR service definition seed records (codes, names, departments, SLA, menuPath, audit metadata).
MDMS support schemas
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.AllowedModules, .../Schemas/HCM-ADMIN-CONSOLE.AppConfigCache
Added schema records for AllowedModules and AppConfigCache enforcing required fields and uniqueness constraints for MDMS validation.

Sequence Diagram(s)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Poem

I hop through JSON, nose in file seams,
Modules and screens stitched from small dreams.
Links and labels tucked in rows,
Help and privacy in tidy prose.
A carrot patch of configs — onward it beams. 🐇✨

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
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch AdminConsole-v0.5

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@Shreya-egov Shreya-egov changed the title changes by Rachana(FormConfig) and Bhavya(FieldPropertiesPanelConfig)… changes by Rachana for Complaints module feature Aug 22, 2025
Copy link

@coderabbitai coderabbitai bot left a 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 CI

The 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 id values (jq -r '.[].id' … \| sort \| uniq -d)
    • Verifies exactly four entries in the data array (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.md or 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 HTTPS

Adding 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": false
mdms/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 schema

To 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": false
mdms/HCM/Admin Console v0.5/Schemas/HCM-ADMIN-CONSOLE.FormConfigTemplate (1)

52-66: navigateTo shape: consider requiring both name and type together

If 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.

📥 Commits

Reviewing files that changed from the base of the PR and between daaa125 and 47c9526.

📒 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 entry

Shape 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 under mdms/** 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 constraints

Data 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 the HCM-ADMIN-CONSOLE.targetConfigs file at the claimed path, so I can’t confirm whether any SMC_…-prefixed keys are present under the MR-DN campaign. Please verify:

  • The exact relative path to HCM-ADMIN-CONSOLE.targetConfigs for “Admin Console v0.5”
  • That the file contains the snippet in question
  • Whether any columns under "campaignType": "MR-DN" still use the HCM_ADMIN_CONSOLE_TARGET_SMC_* prefix

Once 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 definition

No 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 record

Matches 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 structure

We attempted to enumerate distinct fieldType values from the Data file, but the script returned only null, indicating that no fieldType property 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

  1. Confirm whether the Data file defines field types as object keys rather than properties. For example, if the file structure is:
    {
      "TEXT": { },
      "DATE": { },
      "NUMBER": { }
    }
    then enumerate the keys instead of .[] .fieldType.
    Example:
    jq -r 'keys[]' /path/to/HCM-ADMIN-CONSOLE.FieldTypeMappingConfig
  2. Once real field types (e.g., TEXT, NUMBER, DATE) are identified, update the schema to use an enum:
    "fieldType": {
    -   "type": "string"
    +   "type": "string",
    +   "enum": ["TEXT", "NUMBER", "DATE", …]
    },
    This will catch configuration errors when invalid values are supplied.
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 Arrays

All 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 entire mdms/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 pattern

tenantId, 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 path

Household 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 consistent

MDMS 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 consistent

MDMS 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 order values detected.
  • ⚠️ Mixed-case fieldType values 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.FieldTypeMappingConfig schema (found at mdms/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 active

The 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 healthy

Data matches the expected schema with seven help items for the “campaign” module, each having a unique order and 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 code

I ran rg -nC2 -S '\bREGISTRATIONANDDELVFLOW\b' and the only occurrence is in mdms/HCM/Admin Console v0.5/Data/HCM-ADMIN-CONSOLE.AppModuleSchema at 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, and disabled to 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 → stringProperties

Reason: 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).

@jagankumar-egov
Copy link
Collaborator

where is the login config data and its schema @Shreya-egov

@jagankumar-egov
Copy link
Collaborator

appLink master needs to be updated @Shreya-egov

@jagankumar-egov
Copy link
Collaborator

can u check all masters looks like it is not updated properly

Copy link

@coderabbitai coderabbitai bot left a 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/description

Add 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 strings

Prevents 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 sync

You 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 input

Mirrors 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 5a885f8 and 4f56596.

📒 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 needed

We ran the suggested check and found numerous MDMS directories already containing spaces, for example:

  • mdms/HCM/HCM ADMINCONSOLE v0.1
  • mdms/HCM/HCM Microplanning v0.1
  • mdms/HCM/HCM ADMINCONSOLE v0.3.2 FeedBack
  • …and now mdms/HCM/Admin Console v0.5

Because 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), each title occurs 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-unique at the intended scope (the root-level array for this master) and that using title as the de-duplication key is correct (many other masters use code).
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 nits

The 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.5

Excellent 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.AppLink
  • New UI masters (each has both Schema and Data files):

    • commonHCMUiConfig.LoginConfig
    • commonHCMUiConfig.MasterLandingScreen
    • commonHCMUiConfig.PrivacyPolicy
    • commonUiConfig.HelpTutorial

Please execute your standard MDMS validation suite to ensure all schema/data pairs pass without errors.


1-7: Localisation keys verified

All three keys referenced in commonHCMUiConfig.LoginConfigCORE_COMMON_LOGIN, CORE_COMMON_CONTINUE, and CORE_COMMON_FORGOT_PASSWORD—are present in the localisation masters under localisation/ (e.g. localisation/consolidated/en_IN/rainmaker-common.json, localisation/HCM/V1.8/..., etc.). No missing keys were detected.

Comment on lines +1 to +93
{
"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"
}
]
Copy link

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.")
PY

Length 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.")
PYTHON

Length 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" || true

Length 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 20

Length 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).

Comment on lines +50 to +93
"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"
}
]
Copy link

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' - || true

Length 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 -c

Length 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.
  • 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.
🤖 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.

Comment on lines +36 to +95
"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"
}
}
}
},
Copy link

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.

Suggested change
"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.

Comment on lines +96 to +115
"bannerImages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"image": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
}
Copy link

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.

Suggested change
"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.

Copy link

@coderabbitai coderabbitai bot left a 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 $id

Small 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 bound

Ordering 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 explicit

Requiring 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 fieldName

Defaults 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 disabled

A 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: false

Prevents 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 4f56596 and 7070c62.

📒 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 location

If 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.

Comment on lines +1 to +212
{
"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
Copy link

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 || true

Length 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.

Comment on lines +17 to +24
"enum": [
"REGISTRATIONFLOW",
"INVENTORYFLOW",
"ATTENDANCEFLOW",
"COMPLAINTFLOW",
"DELIVERYFLOW",
"HFREFERALFLOW"
],
Copy link

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.

Suggested change
"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".

Comment on lines +53 to +68
"navigateTo": {
"type": "object",
"required": [],
"properties": {
"name": {
"type": "string"
},
"type": {
"enum": [
"template",
"form"
],
"type": "string"
}
}
},
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

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.

Suggested change
"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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants