Skip to content

Release 3.7.1 to main#140

Open
snehar-nd wants to merge 37 commits into
mainfrom
release-3.7.1
Open

Release 3.7.1 to main#140
snehar-nd wants to merge 37 commits into
mainfrom
release-3.7.1

Conversation

@snehar-nd

Copy link
Copy Markdown
Contributor

📋 Description

JIRA ID:

Please provide a summary of the change and the motivation behind it. Include relevant context and details.


✅ Type of Change

  • 🐞 Bug fix (non-breaking change which resolves an issue)
  • New feature (non-breaking change which adds functionality)
  • 🔥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 🛠 Refactor (change that is neither a fix nor a new feature)
  • ⚙️ Config change (configuration file or build script updates)
  • 📚 Documentation (updates to docs or readme)
  • 🧪 Tests (adding new or updating existing tests)
  • 🎨 UI/UX (changes that affect the user interface)
  • 🚀 Performance (improves performance)
  • 🧹 Chore (miscellaneous changes that don't modify src or test files)

ℹ️ Additional Information

Please describe how the changes were tested, and include any relevant screenshots, logs, or other information that provides additional context.

snehar-nd and others added 30 commits February 4, 2026 14:28
fix: amm-2140 stillbirth and abortion report download issue
Upgrade version from 3.6.0 to 3.7.0
fix: amm-2140 baby death report download issue
Reassign calls from MO to ANM and display HRP in ANM worklist
changes made for disconnected call and call allocation
When a call is closed with a not-answered reason (Number busy, Switched off,
No reply, etc.), the call was being unallocated from the agent due to
isCallDisconnected being forced true. This fix restores the agent allocation
so the record stays visible in the agent's worklist for retry.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Roshini's change unallocated ALL disconnected calls including busy ones.
Fixed at root cause - unallocation now skipped when reason is a
not-answered type (busy, switched off, no reply etc).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: busy/not-answered calls stay in agent worklist after call closure
Adds composite DB indexes on t_mctsoutboundcalls, t_childvaliddata, and
t_mothervalidrecord to fix the 504 Gateway Timeout on the Child+Self
call allocation info endpoint. Existing single-column indexes on low-
cardinality columns (phoneNumberType=2, ProviderServiceMapID=2) were
being skipped by the MySQL optimizer, causing full scans of 4M+ rows.

Run db_indexes_performance.sql directly on production DB — no deployment needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ordsInfo

The Child+Self call allocation info endpoint timed out (504) because
getEligibleRecordsInfo fired 3 separate COUNT queries against
t_mctsoutboundcalls (4M rows) sequentially — each doing a full table
scan. Q3 (HR unallocated) returned 0 rows but still scanned all 4M rows.

Fix: replace the 3 separate queries with a single native SQL query using
SUM(CASE WHEN) conditional aggregation. One table scan now returns all
three counts (LR unallocated, HR unallocated, allocated) instead of three
independent scans. Same fix applied to the Mother path.

Combined with composite DB indexes in db_indexes_performance.sql, this
reduces response time from 60s+ timeout to under 1s.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…y migration

Indexes belong in the DB migration repo, not the application repo.
See AMRIT-DB V83__ECD_outbound_calls_performance_indexes.sql.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…o fix 504

Converts getChildUnAllocatedCountLR, getChildUnAllocatedCountHR, and
getTotalAllocatedCountChild to native queries with FORCE INDEX hint so
MySQL uses the correct index instead of doing a full scan of 4M rows.

Reverts consolidated SUM(CASE WHEN) approach — back to 3 separate queries,
each now guided to idx_mcts_eligible_v2 via FORCE INDEX.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…k to 3 separate calls

Removes unused getChildCountsLRHRAllocated and getMotherCountsLRHRAllocated
from OutboundCallsRepo. Reverts mother count block in CallAllocationImpl
to use the original 3 separate query methods.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Addresses reviewer comment: use OutboundCalls entity and mapped field names
instead of raw table/column names with FORCE INDEX. Performance is handled
by the restructured idx_mcts_eligible_v2 index (AMRIT-DB V84 migration).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sneha and others added 7 commits June 29, 2026 15:20
…o fix 504

Reverts JPQL queries back to native SQL with FORCE INDEX hint on
getChildUnAllocatedCountLR, getChildUnAllocatedCountHR, and
getTotalAllocatedCountChild. FORCE INDEX is required to guarantee MySQL
uses idx_mcts_eligible_v2 (restructured via AMRIT-DB V84 migration)
instead of falling back to a full table scan on 4M+ rows.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…bleRecordsInfo

Fix/504 composite indexes get eligible records info
Bump version from 3.7.0 to 3.7.1
@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@snehar-nd, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 51 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5f3cf7ce-e440-4fe4-b260-b8e80988a3d7

📥 Commits

Reviewing files that changed from the base of the PR and between bedd90a and 5538537.

📒 Files selected for processing (4)
  • pom.xml
  • src/main/java/com/iemr/ecd/repo/call_conf_allocation/OutboundCallsRepo.java
  • src/main/java/com/iemr/ecd/service/associate/CallClosureImpl.java
  • src/main/java/com/iemr/ecd/service/call_conf_allocation/CallAllocationImpl.java

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

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

@sonarqubecloud

Copy link
Copy Markdown

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.

4 participants