| Line 1878... |
Line 1878... |
| 1878 |
.append("<td style='text-align:right;font-weight:600'>").append(String.format("%.2f", dm.getCompositeScore())).append("</td>")
|
1878 |
.append("<td style='text-align:right;font-weight:600'>").append(String.format("%.2f", dm.getCompositeScore())).append("</td>")
|
| 1879 |
.append("</tr>");
|
1879 |
.append("</tr>");
|
| 1880 |
}
|
1880 |
}
|
| 1881 |
body.append("</tbody></table>");
|
1881 |
body.append("</tbody></table>");
|
| 1882 |
body.append("<p style='color:#888;font-size:11px;margin-top:20px'>Phase-1 probe — sent direct (not queued). ")
|
1882 |
body.append("<p style='color:#888;font-size:11px;margin-top:20px'>Phase-1 probe — sent direct (not queued). ")
|
| - |
|
1883 |
.append("DRR% and >1L% denominators now anchor to the picked month's monthly_target rows. ")
|
| - |
|
1884 |
.append("Only the Aging% denominator (warehouse aging stock) remains a live snapshot — ")
|
| 1883 |
.append("Note: for past months, DRR% denominator reads the current month's target snapshot (limitation of the live query).</p>");
|
1885 |
.append("for past months Aging% uses today's aging pile, not month-end's.</p>");
|
| 1884 |
|
1886 |
|
| 1885 |
javax.mail.internet.MimeMessage message = googleMailSender.createMimeMessage();
|
1887 |
javax.mail.internet.MimeMessage message = googleMailSender.createMimeMessage();
|
| 1886 |
org.springframework.mail.javamail.MimeMessageHelper helper =
|
1888 |
org.springframework.mail.javamail.MimeMessageHelper helper =
|
| 1887 |
new org.springframework.mail.javamail.MimeMessageHelper(message, false, "UTF-8");
|
1889 |
new org.springframework.mail.javamail.MimeMessageHelper(message, false, "UTF-8");
|
| 1888 |
helper.setTo(RBM_RANK_PROBE_RECIPIENTS);
|
1890 |
helper.setTo(RBM_RANK_PROBE_RECIPIENTS);
|