-
Notifications
You must be signed in to change notification settings - Fork 11
Imc latest UI #321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Imc latest UI #321
Changes from all commits
77e6b4f
acd3540
6258eb6
4e0bf62
b2766d0
7795bde
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,2 +1,13 @@ | ||||||||||
| REACT_APP_STATE_LEVEL_TENANT_ID=pb | ||||||||||
| REACT_APP_PROXY_URL=https://qa.digit.org | ||||||||||
| # REACT_APP_STATE_LEVEL_TENANT_ID=pb | ||||||||||
| # REACT_APP_PROXY_URL=https://qa.digit.org | ||||||||||
| STATE_LEVEL_TENANT_ID=pg | ||||||||||
| REACT_APP_PROXY_URL=https://urban.eydemoapp.in | ||||||||||
| REACT_APP_STATE_LEVEL_TENANT_ID=pg | ||||||||||
| SKIP_PREFLIGHT_CHECK=true | ||||||||||
| REACT_APP_USER_TYPE=EMPLOYEE | ||||||||||
| REACT_APP_EMPLOYEE_TOKEN=ec6a2db1-c000-4927-af21-f4ce13c1d75f | ||||||||||
| REACT_APP_CITIZEN_TOKEN=dce88a06-7e09-4923-97f9-f15af2deea66 | ||||||||||
|
Comment on lines
+8
to
+9
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Remove authentication tokens from sample file. Authentication tokens should not be included in sample environment files as they may be accidentally committed or used in production. -REACT_APP_EMPLOYEE_TOKEN=ec6a2db1-c000-4927-af21-f4ce13c1d75f
-REACT_APP_CITIZEN_TOKEN=dce88a06-7e09-4923-97f9-f15af2deea66
+REACT_APP_EMPLOYEE_TOKEN=your-employee-token-here
+REACT_APP_CITIZEN_TOKEN=your-citizen-token-here📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||
| REACT_APP_PROXY_API=https://urban.eydemoapp.in | ||||||||||
| REACT_APP_PROXY_ASSETS=https://urban.eydemoapp.in | ||||||||||
| REACT_APP_GLOBAL=https://tfstatez7a2s.blob.core.windows.net/egov-dev-assets/globalConfigs.js | ||||||||||
|
|
||||||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,33 @@ | ||||||
| # SKIP_PREFLIGHT_CHECK=true | ||||||
| # REACT_APP_PROXY_API=https://unified-dev.digit.org | ||||||
| # REACT_APP_PROXY_ASSETS=https://unified-dev.digit.org | ||||||
| # REACT_APP_GLOBAL=https://s3.ap-south-1.amazonaws.com/egov-dev-assets/globalConfigs.js | ||||||
|
|
||||||
| # SKIP_PREFLIGHT_CHECK=true | ||||||
| # REACT_APP_USER_TYPE=EMPLOYEE | ||||||
| # REACT_APP_PROXY_API=https://urban.eydemoapp.in | ||||||
| # REACT_APP_PROXY_ASSETS=https://urban.eydemoapp.in | ||||||
| # REACT_APP_GLOBAL=https://tfstate8auyj.blob.core.windows.net/egov-dev-assets/globalConfigs.js | ||||||
|
|
||||||
|
|
||||||
| # SKIP_PREFLIGHT_CHECK=true | ||||||
| # REACT_APP_USER_TYPE=EMPLOYEE | ||||||
| # REACT_APP_EMPLOYEE_TOKEN=c835932f-2ad4-4d05-83d6-49e0b8c59f8a | ||||||
| # REACT_APP_CITIZEN_TOKEN=7cd58aae-30b3-41ed-a1b3-3417107a993c | ||||||
|
Comment on lines
+15
to
+16
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Immediate actions:
-# REACT_APP_EMPLOYEE_TOKEN=c835932f-2ad4-4d05-83d6-49e0b8c59f8a
-# REACT_APP_CITIZEN_TOKEN=7cd58aae-30b3-41ed-a1b3-3417107a993c📝 Committable suggestion
Suggested change
🧰 Tools🪛 Gitleaks (8.26.0)15-15: Detected a Generic API Key, potentially exposing access to various services and sensitive operations. (generic-api-key) 16-16: Detected a Generic API Key, potentially exposing access to various services and sensitive operations. (generic-api-key) 🤖 Prompt for AI Agents |
||||||
|
|
||||||
| SKIP_PREFLIGHT_CHECK=true | ||||||
| REACT_APP_USER_TYPE=EMPLOYEE | ||||||
| # REACT_APP_USER_TYPE=CITIZEN | ||||||
| # REACT_APP_PROXY_API=https://staging.digit.org | ||||||
| # REACT_APP_PROXY_ASSETS=https://staging.digit.org | ||||||
| # REACT_APP_GLOBAL=https://s3.ap-south-1.amazonaws.com/works-dev-asset/globalConfigsWorks.js | ||||||
|
|
||||||
| REACT_APP_PROXY_API=https://urban.eydemoapp.in | ||||||
| REACT_APP_PROXY_ASSETS=https://urban.eydemoapp.in | ||||||
| REACT_APP_GLOBAL=https://s3.ap-south-1.amazonaws.com/works-dev-asset/globalConfigsWorks.js | ||||||
|
|
||||||
| # SKIP_PREFLIGHT_CHECK=true | ||||||
| # REACT_APP_PROXY_API=https://unified-dev.digit.org | ||||||
| # REACT_APP_PROXY_ASSETS=https://unified-dev.digit.org | ||||||
| # REACT_APP_GLOBAL=https://s3.ap-south-1.amazonaws.com/egov-dev-assets/globalConfigs.js | ||||||
| # REACT_APP_USER_TYPE=EMPLOYEE | ||||||
|
Comment on lines
+1
to
+33
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Streamline duplicated env blocks Multiple, near-identical blocks (lines 1-11, 13-11, 18-28, 29-33) repeat the same variables with different values. This makes it hard to know which values are active and risks accidental deployment with the wrong configuration. Suggested approach: This reduces noise and clarifies which variables the app will actually read. 🧰 Tools🪛 Gitleaks (8.26.0)15-15: Detected a Generic API Key, potentially exposing access to various services and sensitive operations. (generic-api-key) 16-16: Detected a Generic API Key, potentially exposing access to various services and sensitive operations. (generic-api-key) 🤖 Prompt for AI Agents |
||||||
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -6,7 +6,7 @@ | |||||||||||
| <link href="https://fonts.googleapis.com/css2?family=Roboto+Condensed:wght@400;500;700&family=Roboto:wght@400;500;700&display=swap" rel='stylesheet' type='text/css'> | ||||||||||||
| <meta name="viewport" content="width=device-width, initial-scale=1"/> | ||||||||||||
| <meta name="theme-color" content="#00bcd1"/> | ||||||||||||
| <title>Digit</title> | ||||||||||||
| <title>IMC</title> | ||||||||||||
|
||||||||||||
| <meta name="theme-color" content="#00bcd1"/> | |
| <title>Digit</title> | |
| <title>IMC</title> | |
| <meta name="theme-color" content="#4729A3"/> | |
| <title>IMC</title> |
🤖 Prompt for AI Agents
In frontend/micro-ui/web/micro-ui-internals/example/public/index.html at lines 8
to 9, update the meta tag with name "theme-color" to use the new brand color
#4729A3 instead of the old cyan #00bcd1 to ensure consistency with the updated
primary accent color across the application.
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
|
|
@@ -5,10 +5,12 @@ const createProxy = createProxyMiddleware({ | |||||||
| // target: process.env.REACT_APP_PROXY_API || "https://qa.digit.org", | ||||||||
| target: process.env.REACT_APP_PROXY_API || "https://qa.digit.org", | ||||||||
| changeOrigin: true, | ||||||||
| secure: false, | ||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Document SSL certificate verification bypass. The Consider adding a comment to clarify the purpose: + // Disable SSL certificate verification for development
secure: false,📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||
| }); | ||||||||
| const assetsProxy = createProxyMiddleware({ | ||||||||
| target: process.env.REACT_APP_PROXY_ASSETS || "https://qa.digit.org", | ||||||||
| changeOrigin: true, | ||||||||
| secure: false, | ||||||||
| }); | ||||||||
| module.exports = function (app) { | ||||||||
| [ | ||||||||
|
|
@@ -43,7 +45,8 @@ module.exports = function (app) { | |||||||
| "/tl-services/v1/_create", | ||||||||
| "/tl-services/v1/_search", | ||||||||
| "/egov-url-shortening/shortener", | ||||||||
| "/inbox/v1/_search", | ||||||||
| // "/inbox/v1/_search", | ||||||||
| "/inbox/v2/_search", | ||||||||
|
Comment on lines
+48
to
+49
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainVerify API compatibility when switching from v1 to v2. The inbox search endpoint has been switched from v1 to v2. Ensure that all dependent components are compatible with the v2 API. Run the following script to verify the usage of inbox search endpoints: 🏁 Script executed: #!/bin/bash
# Description: Check for any remaining references to v1 inbox search endpoints
# Expected: No v1 references should remain if fully migrated to v2
echo "Searching for v1 inbox search references..."
rg -A 3 "inbox/v1/_search" --type js --type jsx --type ts --type tsx
echo "Searching for v2 inbox search references..."
rg -A 3 "inbox/v2/_search" --type js --type jsx --type ts --type tsxLength of output: 387 🏁 Script executed: #!/bin/bash
# Re-run search without relying on ripgrep’s built-in type filters
echo "Searching for v1 inbox search references across all files..."
rg -A 3 "inbox/v1/_search"
echo "Searching for v2 inbox search references across all files..."
rg -A 3 "inbox/v2/_search"Length of output: 2650 No active
🤖 Prompt for AI Agents |
||||||||
| "/inbox/v2/_search", | ||||||||
|
|
||||||||
| "/tl-services", | ||||||||
|
|
||||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -2,11 +2,11 @@ | |||||
| "name": "egovernments", | ||||||
| "version": "1.5.4", | ||||||
| "main": "index.js", | ||||||
| "workspaces": [ | ||||||
| "workspaces": [ | ||||||
| "packages/libraries", | ||||||
| "example", | ||||||
| "packages/react-components", | ||||||
| "packages/modules/*" | ||||||
| "packages/modules/*" | ||||||
| ], | ||||||
| "author": "Abhinav Kushwaha <[email protected]>", | ||||||
| "license": "MIT", | ||||||
|
|
@@ -64,22 +64,23 @@ | |||||
| "deploy:jenkins": "./scripts/jenkins.sh" | ||||||
| }, | ||||||
| "devDependencies": { | ||||||
| "@babel/plugin-transform-optional-chaining": "7.25.9", | ||||||
| "husky": "7.0.4", | ||||||
| "lint-staged": "12.3.7", | ||||||
| "npm-run-all": "4.1.5", | ||||||
| "prettier": "2.1.2", | ||||||
| "@babel/plugin-transform-optional-chaining": "7.25.9" | ||||||
| "prettier": "2.1.2" | ||||||
| }, | ||||||
| "husky": {}, | ||||||
| "lint-staged": { | ||||||
| "*.{js,css,md}": "prettier --write" | ||||||
| }, | ||||||
| "dependencies": { | ||||||
| "http-proxy-middleware": "^3.0.5", | ||||||
| "lodash": "4.17.21", | ||||||
| "microbundle-crl": "0.13.11" | ||||||
| } , | ||||||
| }, | ||||||
| "resolutions": { | ||||||
| "**/babel-loader": "8.2.2", | ||||||
| "**/babel-loader": "8.1.0", | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainVerify babel-loader version downgrade The babel-loader version has been downgraded from a potentially newer version to 🌐 Web query: 💡 Result: As of July 3, 2025, the latest stable version of Regarding version 8.1.0, released on March 20, 2020, there are no known direct security vulnerabilities associated with this version. (security.snyk.io) However, it's important to note that Therefore, it's highly recommended to upgrade to the latest stable version of Citations:
Upgrade babel-loader to the latest stable release [email protected] is four major versions behind the current stable (10.0.0) and—while no direct CVEs have been reported against 8.1.0—using such an old loader can leave you missing critical security patches, performance optimizations, and compatibility fixes with recent Babel and webpack releases. Please update your dependency to at least 10.0.0 (or newer) to keep your build chain secure and up to date. • File: - "**/babel-loader": "8.1.0",
+ "**/babel-loader": "^10.0.0",📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| "**/@babel/core": "7.14.0", | ||||||
| "**/@babel/preset-env": "7.14.0", | ||||||
| "**/@babel/plugin-transform-modules-commonjs": "7.14.0" | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -25,7 +25,7 @@ | |
| svg { | ||
| height: 20px; | ||
| width: 20px; | ||
| fill: #f47738; | ||
| fill: #4729A3; | ||
| margin: auto; | ||
| } | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -10,7 +10,7 @@ | |
| } | ||
| .fill-path-primary-main { | ||
| path { | ||
| fill: #f47738; | ||
| fill: #4729A3; | ||
| } | ||
| } | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -33,6 +33,7 @@ | |
| .inbox-total { | ||
| padding: 4px; | ||
| display: table; | ||
| background-color: #4729A3 !important; | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) LGTM! Color theme update with specificity note. The purple color (#4729A3) updates are consistent with the broader UI theme changes. However, the use of Also applies to: 434-434 🤖 Prompt for AI Agents |
||
| @apply whitespace-normal text-center text-white w-8 h-8 bg-primary-main rounded-full ml-xs; | ||
| } | ||
| } | ||
|
|
@@ -430,6 +431,7 @@ | |
| } | ||
| .complaint-links-container .header .removeHeight { | ||
| line-height: 28px; | ||
| color: #4729A3 !important; | ||
| } | ||
|
|
||
| @screen dt { | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -2,6 +2,7 @@ | |||||||||||||||
| .employeeCard { | ||||||||||||||||
| .submit-bar { | ||||||||||||||||
| @apply w-full; | ||||||||||||||||
| background-color: #4729A3B2 !important; | ||||||||||||||||
| } | ||||||||||||||||
|
Comment on lines
4
to
6
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick (assertive) Use theme variable for button background To stay consistent with the new purple palette use a CSS variable instead of an 8-digit hex literal. - background-color: #4729A3B2 !important;
+ background-color: var(--egov-primary-dark-70, rgba(71,41,163,0.7)) !important;📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||
| } | ||||||||||||||||
| } | ||||||||||||||||
|
|
||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -102,6 +102,7 @@ import usePtMDMS from "./pt/useMDMS"; | |||||
| import usePropertyAssessment from "./pt/usePropertyAssessment"; | ||||||
| import usePtCalculationEstimate from "./pt/usePtCalculationEstimate"; | ||||||
| import useGenderMDMS from "./pt/useGenderMDMS"; | ||||||
| import useSalutationsMDMS from "./pt/useSalutationsMdms"; | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainVerify import path casing consistency. The import path uses 🏁 Script executed: #!/bin/bash
# Description: Verify the actual filename for the salutations hook
# Expected: Find the correct filename to ensure import consistency
fd -t f -e js "useSalutations" --exec echo "Found: {}"Length of output: 158 Correct import path casing for useSalutationsMDMS The hook file is named • File: • Update the import to match the filename casing: - import useSalutationsMDMS from "./pt/useSalutationsMdms";
+ import useSalutationsMDMS from "./pt/useSalutationsMDMS";📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| import usePTGenderMDMS from "./pt/usePTGenderMDMS"; | ||||||
| import useMyPropertyPayments from "./pt/useMyPropertyPayments"; | ||||||
| import useGenericViewProperty from "./pt/useGenericViewProperty"; | ||||||
|
|
@@ -327,6 +328,7 @@ const pt = { | |||||
| usePropertyAssessment, | ||||||
| usePtCalculationEstimate, | ||||||
| useGenderMDMS, | ||||||
| useSalutationsMDMS, | ||||||
| usePTGenderMDMS, | ||||||
| useMyPropertyPayments, | ||||||
| useGenericViewProperty, | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,18 @@ | ||||||||||||||||||||||||||
| import { useQuery } from "react-query"; | ||||||||||||||||||||||||||
| import { MdmsService } from "../../services/elements/MDMS"; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| const useSalutationsMDMS = (tenantId, moduleCode, type, config = {}) => { | ||||||||||||||||||||||||||
| const useSalutationsDetails = () => { | ||||||||||||||||||||||||||
| return useQuery("PT_Salutations_DETAILS", () => MdmsService.getSalutationsType(tenantId, moduleCode ,type), config); | ||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Use dynamic query key to prevent cache collisions The hardcoded query key "PT_Salutations_DETAILS" could cause cache issues when the same hook is used with different parameters. - return useQuery("PT_Salutations_DETAILS", () => MdmsService.getSalutationsType(tenantId, moduleCode ,type), config);
+ return useQuery(
+ ["PT_Salutations_DETAILS", tenantId, moduleCode, type],
+ () => MdmsService.getSalutationsType(tenantId, moduleCode, type),
+ config
+ );📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| switch (type) { | ||||||||||||||||||||||||||
| case "Salutations": | ||||||||||||||||||||||||||
| return useSalutationsDetails(); | ||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||
|
Comment on lines
+10
to
+14
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Improve switch statement and add default case The switch statement only handles one case and lacks a default case, which could lead to undefined behavior. switch (type) {
case "Salutations":
return useSalutationsDetails();
+ default:
+ throw new Error(`Unsupported salutation type: ${type}`);
}📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| export default useSalutationsMDMS; | ||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -5,7 +5,7 @@ const Urls = { | |
| localization: `/localization/messages/v1/_search`, | ||
| location: { | ||
| localities: `/egov-location/location/v11/boundarys/_search?hierarchyTypeCode=ADMIN&boundaryType=Locality`, | ||
| revenue_localities: `/egov-location/location/v11/boundarys/_search?hierarchyTypeCode=REVENUE&boundaryType=Locality`, | ||
| revenue_localities: `/egov-location/location/v11/boundarys/_search?hierarchyTypeCode=REVENUE&boundaryType=City`, | ||
| }, | ||
|
|
||
| pgr_search: `/pgr-services/v2/request/_search`, | ||
|
|
@@ -25,8 +25,10 @@ const Urls = { | |
| UserProfileUpdate: "/user/profile/_update", | ||
| EmployeeSearch: "/egov-hrms/employees/_search", | ||
|
|
||
| InboxSearch: "/inbox/v1/_search", | ||
| // InboxSearch: "/inbox/v1/_search", | ||
| InboxSearch: "/inbox/v2/_search", | ||
| InboxSearchV2: "/inbox/v2/_search", | ||
|
|
||
|
Comment on lines
+28
to
+31
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainVerify inbox search API migration completion The inbox search has been migrated from v1 to v2 endpoint. Ensure all consuming services have been updated to use the new endpoint. 🏁 Script executed: #!/bin/bash
# Description: Verify all inbox search references use v2 endpoint
# Expected: No remaining references to v1 inbox search endpoint
echo "=== Searching for inbox/v1/_search references ==="
rg -A 3 -B 3 "inbox/v1/_search"
echo "=== Searching for InboxSearch usage ==="
rg -A 3 -B 3 "InboxSearch"
echo "=== Searching for inbox/v2/_search references ==="
rg -A 3 -B 3 "inbox/v2/_search"Length of output: 18333 Ensure complete migration of the inbox search API to v2 We’ve still got remnants of the v1 endpoint in our docs and example proxy setup. Please update the following: • frontend/micro-ui/web/micro-ui-internals/example/src/setupProxy.js • docs/inbox.yml Optionally, consider aligning the Once these are updated, rerun the grep checks to confirm there are no remaining v1 references. 🤖 Prompt for AI Agents |
||
|
|
||
| UserSearch: "/user/_search", | ||
| UserLogout: "/user/_logout", | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Clarify duplicate STATE_LEVEL_TENANT_ID variables.
There are two similar variables that might cause confusion. Consider adding comments to explain their purpose.
🤖 Prompt for AI Agents