HANDOFF.md
@@ -30,6 +30,13 @@ - **验证**:`HolidayBulletinServiceTest` 3 个用例通过(新增 2 个覆盖民航累计对比期间与无数据返回 null);端到端用库内真实 2026-10-02 数据(铁路/道路/水路/车流齐全、缺民航)重新生成快报,民航累计同比 `-10.0%/-0.9%`、民航累计 `6.75`、总计累计 `3082.24`、总计累计同比 `-4.6%/-1.8%`,与手工稿口径一致。 - **Git**:本次改动待用户「验收通过」后再提交/推送。 ### 10-03 深夜(3):快报累计正文单位由「亿人次」改「万人次」(待验收) - **口径(用户/领导确认)**:假期累计数值目前偏小(0.31 亿),正文可读性差,改为与当日一致的**万人次**;例如 `假期以来,全省全社会跨区域人员流动量累计3088.63万人次`,不再输出「0.31亿人次」。表格与其余口径不变。 - **实现**:`HolidayBulletinService` 抽出 `cumulativeParagraph(...)`,直接按万人次(2 位小数)输出累计值;同比仍为「增长/下降 + 一位小数」,**保持一次取整不变**(总计累计同比 2025 精确 -4.4486% → `-4.4%`;手工稿的 -4.5% 属二次取整,不采用)。 - **验证**:`HolidayBulletinServiceTest` 4 个用例通过(新增 `cumulativeParagraphUsesWanUnitAndSingleRounding` 固化「万人次 + 一次取整」);重启后端后重新生成 2026-10-02 快报,正文为 `累计3088.63万人次,比2025年同期下降4.4%,比2024年同期下降1.6%`,与手工稿仅差既定的取整口径;2026-10-01 回归正常(`累计1643.17万人次`)。 - **状态**:待用户「验收通过」后提交/推送。 --- ### 补充(10-03 下午):服务器部署报 “Access denied ... (using password: NO)” —— 根因与修复 traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayBulletinService.java
@@ -78,8 +78,6 @@ } String currentTotal = formatNumber(current.getTotalPersonFlow()); String cumulativeTotalYi = formatNumber(currentCumulative.getTotalPersonFlow() == null ? null : HolidayNumberUtils.divide(currentCumulative.getTotalPersonFlow(), BigDecimal.valueOf(10000))); String ringRatioClause = previousDay == null ? "" : ",环比" + ratioPhrase( current.getTotalPersonFlow(), previousDay.getTotalPersonFlow()); String paragraph1 = String.format("%d月%d日(假期第%d天),全省全社会跨区域人员流动量%s万人次%s,比2025年同期%s,比2024年同期%s。", @@ -87,12 +85,7 @@ ringRatioClause, ratioPhrase(current.getTotalPersonFlow(), previousYear == null ? null : previousYear.getTotalPersonFlow()), ratioPhrase(current.getTotalPersonFlow(), twoYearsAgo == null ? null : twoYearsAgo.getTotalPersonFlow())); String paragraph2 = String.format("假期以来,全省全社会跨区域人员流动量累计%s亿人次,比2025年同期%s,比2024年同期%s。", cumulativeTotalYi, ratioPhrase(currentCumulative.getTotalPersonFlow(), previousYearCumulative == null ? null : previousYearCumulative.getTotalPersonFlow()), ratioPhrase(currentCumulative.getTotalPersonFlow(), twoYearsAgoCumulative == null ? null : twoYearsAgoCumulative.getTotalPersonFlow())); String paragraph2 = cumulativeParagraph(currentCumulative, previousYearCumulative, twoYearsAgoCumulative); File template = resolveTemplateFile(); if (!template.exists() || !template.isFile()) { @@ -352,6 +345,16 @@ return statService.cumulativeMetrics(comparisonYear.getYear(), current.getHolidayType(), coveredDay); } private String cumulativeParagraph(DailyMetrics currentCumulative, DailyMetrics previousYearCumulative, DailyMetrics twoYearsAgoCumulative) { BigDecimal total = currentCumulative == null ? null : currentCumulative.getTotalPersonFlow(); return String.format("假期以来,全省全社会跨区域人员流动量累计%s万人次,比2025年同期%s,比2024年同期%s。", formatNumber(total), ratioPhrase(total, previousYearCumulative == null ? null : previousYearCumulative.getTotalPersonFlow()), ratioPhrase(total, twoYearsAgoCumulative == null ? null : twoYearsAgoCumulative.getTotalPersonFlow())); } private String ratio(BigDecimal current, BigDecimal base) { if (current == null || base == null || base.abs().compareTo(EPSILON) < 0) return "—"; BigDecimal ratio = HolidayNumberUtils.divide(current, base); traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayBulletinServiceTest.java
@@ -77,6 +77,27 @@ verify(stat, never()).cumulativeMetrics(0, "NATIONAL_DAY", 1); } @Test void cumulativeParagraphUsesWanUnitAndSingleRounding() throws Exception { HolidayBulletinService service = new HolidayBulletinService(null); DailyMetrics current = new DailyMetrics(); current.setTotalPersonFlow(new BigDecimal("3088.62958")); DailyMetrics previousYear = new DailyMetrics(); previousYear.setTotalPersonFlow(new BigDecimal("3232.42742")); DailyMetrics twoYearsAgo = new DailyMetrics(); twoYearsAgo.setTotalPersonFlow(new BigDecimal("3137.80860")); Method method = HolidayBulletinService.class.getDeclaredMethod( "cumulativeParagraph", DailyMetrics.class, DailyMetrics.class, DailyMetrics.class); method.setAccessible(true); String text = (String) method.invoke(service, current, previousYear, twoYearsAgo); assertEquals( "假期以来,全省全社会跨区域人员流动量累计3088.63万人次,比2025年同期下降4.4%,比2024年同期下降1.6%。", text); } private Object comparableCumulative(HolidayBulletinService service, DailyMetrics current, DailyMetrics comparisonYear, Function<DailyMetrics, BigDecimal> selector) throws Exception {