编辑 | blame | 历史 | 原始文档

工作日结_2026-09-18

一、今天做了什么

1. 汇总表三条主线(用户 09-18 上午提出,已修前两条)

先定位,再动手:复核 8 月生成件,确认三条主线是「一个统一根因 + 一处页范围漏项 + 一处口径缺口」:

  • 母版本身是公式驱动的:全省行 = Σ17 市州(公交!C5 = =C9+C13+…)、城市客运/中口径明细市州行 = 跨表引用(城市客运!C9 = =公交!C16+出租!C16+网约车!C16+'轨道、轮渡'!C9)→ 这两页根本不用单独写数据。
  • 主线 1 根因:SummaryWorkbookFiller.ensureMonthFormulas() 页范围只含 6 个台账页,漏 城市客运/中口径明细;而同比公式用的页范围是含的 → 出现"同比列有公式、当月值列空白"。
  • 主线 2/3 根因:生成件**不带公式缓存值**,预览/二次处理读到的是母版上一期的旧值。

改动:
- SummaryWorkbookFiller.ensureMonthFormulas():页范围改用 isMonthLedgerSheet;派生页新增"结构性常量行按月沿用"(中口径明细 武汉 城际城乡出租/网约车 恒为 0 的 4 格);加 logger;删掉已无用的 isFilledLedgerSheet()。
- ReportExportService.recalcWorkbookFormulas():新增,生成收尾逐格 evaluateFormulaCell 写回缓存值(失败兜底 fullCalcOnLoad=true)。

踩坑记录:POI 4.1 的 FormulaEvaluator.evaluate(Cell) 无副作用(只算不写),第一版白跑(日志"成功 40713 格"但文件无 <v>),必须用 evaluateFormulaCell(Cell)。

2. 其他

  • 写了《汇总表三条主线修复方案_2026-09-18》(docs/问题汇总/),把根因、证据、4 步修法、投资"按项目名称更新/新增插行"现状一并记录。
  • 投资侧核实:导入确实按「项目名称 + 类别」upsert(库内 客运站场 49/49、物流园区 135/135 无重复行);缺口是"模板里没有的新项目不会插行"、"资金渠道分组行导入时被跳过"、"同名不同项目不弹窗"。

3. 第 3 步:中口径四维口径统一(下午)

口径定死(写进《功能测试报告_中口径四维口径统一_2026-09-18》):1 公路班线(h2031+个体)= 2 城际城乡公交(city_bus)= 3 城际城乡巡游出租(city_taxi:总量−城市内)= 4 城际城乡网约车(WycSplitCalc 拆分);总量 = 四维之和;**全省行一律 Σ17 市州**。

改动(ReportExportService.java):
- loadMidClassMap() 补维度 3、维度 4(新增 midPeriodKey());
- fillMidCell() 去掉「出租/网约车写死 0」旁路;fillMidYoyCell()/fillMidCumYoyColumn() 同比改四维齐全;
- exportPassengerMidDetail() 由「只遍历公式格」改为「按列遍历」(扩列出的 7~12 月空格才填得上);
- 扩列月份的总行值列改由库内四维合计直接写入(模板本无此列,克隆后既无公式也无缓存值);
- 该函数重算改用逐格容错的 recalcWorkbookFormulas()——evaluateAll() 会在跨簿公式(Sheet2 的 [1]xx!A1)处整本中断,累计列就永远拿不到新缓存值。

验证:独立《生成_中口径明细》8 月全省总行 4003.5701、7 月 4028.3213(原为空),18 个地区总行 = Σ4 维、累计列 = Σ1-8 月;与汇总大表「中口径明细」页逐格一致;回归 = 汇总表 17 页 0 差异、排名件 0 差异、明细件仅 36 格(18 地区 × 2 个月总行)变化。

顺带查清两个老问题:
- 《生成_中口径排名》全省累计 29464.6108 / 同比 0.638,比中口径明细少 2063.45,差值正好是 2026 年 1-6 月维度 4(网约车)→ 排名件是 Java 现算、明细页走母版公式链,两套口径打架(第 3 步的真正收口点)。
- 母版「中口径明细」城市级「城际城乡巡游出租/网约车」行公式引错页(=公交!C13-公交!C15,应指向 出租!/网约车!),城市级恒 0、全省行靠缓存值 → 需修母版公式一次。

4. 第 3 步收尾:缺数据不再覆盖定稿值(13:30)

用户反馈「独立《生成_中口径明细》8 月没问题了,但 1~6 月反而被清空」后,追出**真正根因**:

  • exportPassengerMidDetail() 对扩列月份(>6 月)的总行值列是「直接写库内四维合计、写 0 就 setBlank」;
    而 1~6 月走 keepCached() 把公式清成空格 → 表面上 7/8 月修好了,实际上把母版的定稿链路掐断了。
  • fillMidCell() 同样「库内取值为 0 → setBlank」,于是 2026-01~06 网约车城乡(库内该 6 个月无订单、维度 4 无源)被整片清空,
    连带总行、累计、同比全错。

改动(ReportExportService.java,4 处):

  1. exportPassengerMidDetail() 总行值列:删掉「扩列月份手写库内合计」与 keepCached 清公式两条旁路,**一律保留模板公式**,由收尾重算写回缓存值。
  2. fillMidCell():库内取值为 0(该月该维无源)时**直接 return,保留母版/定稿原值**——绝不写空、也绝不写 0。
  3. recalcWorkbookFormulas():新增 ev.setIgnoreMissingWorkbooks(true)。跨簿公式([1]出租!C13)在外部工作簿缺失时默认抛异常,
    会让引用它的总行/累计连锁失败(表现为「公式在、没有缓存值」),置 true 后改用该格自身缓存值参与计算。
  4. 新增 blankFutureMonthColumns():报表期之后的月份列(8 月报表里的 9~12 月)**清数据格、留表头**,避免克隆公式算出「9~12 月全是 0」的假数据。

重要纠正(写进测试报告,也在此留痕):早前判断「母版中口径明细城市级公式引错页(=公交!C13-公交!C15)」是**误判**——
那是控制台中文乱码造成的误读;母版/模板真实公式是正确的 =[1]出租!C13-[1]出租!C15 / =[1]网约车!C13-[1]网约车!C15,
台账页「总量−城市内」Σ17 市州 = 535.83 / 333.39,与母版定稿全省行完全一致。**母版公式不需要修,之前"待修母版"的结论作废。**

5. 网约车订单报告:Word 2003 XML(WordML)兼容导入(15:00)

用户报障:《湖北网络预约出租汽车2025年09月分析报告.docx》放在桌面导不进去。

定位:该文件根本不是 docx —— 是 Word 2003 XML(WordML 平铺 XML) 被改名成 .docx(文件头 <?mso-application progid="Word.Document"?><w:wordDocument xmlns:w=".../word/2003/wordml">,3.1MB 纯 XML、不是 zip 包),POI 的 XWPFDocument 只能读 OPC(zip) 包 → 抛 File is not a zip file。监管平台/同事间流转的报告常是这种格式,会反复出现。

改动(DataImportService.java):
- importWycOrderReport() 入口按文件头嗅探格式分派:zip→docx;<w:wordDocument+wordml→**新增 WordML DOM 解析路径**;D0CF11E0→明确提示「.doc 请另存为 docx」;其它→「无法识别」;
- 新增 isWordPackage():zip 但无 word/document.xml(xlsx 改名)→ 中文提示,不再抛 XMLBeans 英文堆栈;
- 新增 parseXmlSafely():DOM 解析关闭外部实体/DTD(防 XXE);
- 表格匹配抽成与格式无关的 matchWycOrderTable(),docx 与 WordML 两条路径**共用同一套表头识别/17 市州取值/合计行逻辑**,不会口径分叉;
- 报表期识别抽成 periodOfParagraphs(),两种格式共用。

验证:8 条用例全部通过(见《功能测试报告_网约车订单报告WordML兼容导入_2026-09-18》)。2025-09 入库:订单合计 17,652,159;武汉 8,076,610 / 黄石 676,644 / 十堰 1,048,593 / 恩施 804,736 / 林区 1,424,与报告附件1 逐项一致;pin 从 wyc_total_monthly 同期复制。真 docx(2026-08)重导幂等无变化;.doc、xlsx 改名、非本报告 docx 三种负向均给出中文可操作提示。

数据缺口已补齐(重要):用户在 14:21~14:49 之间自行导入 2026-01~06(6 份)、2025-01、2025-10~12;2025-09 由本次修复后补入。现在 2025-01~12 + 2026-01~08 的订单与 pin 全部齐全。直接效果:中口径维度 4 的 1~6 月从「无源」变为「可算」,**中口径排名件与中口径明细件的累计口径自动归一**(两者 1-8 月累计均为 31528.0606,此前差 2063.45)。

二、测试结果摘要

见 docs/功能测试报告/功能测试报告_汇总表公式扩页与重算_2026-09-18.md:8 条正向 + 4 条负向/边界 + 4 项入库抽查,全部通过。

  • 城市客运 36 格、中口径明细 180 格 8 月列补齐(公式 + 缓存值)。
  • 全省行 = Σ17 市州三方一致:公交 12315.37、出租 5786.81、网约车 4997.74(与库内 city_bus_monthly 2026-08 各市州求和逐项对齐;武汉 3856.83 / 黄石 879.12 抽查一致)。
  • 中口径排名 K3 缓存 24481.7407 = 手工 Σ17 市州。
  • 回归:改动前后逐格对比,仅 216 格变化,全部落在目标两页,其余 17 页 0 差异。

第 3 步(下午)测试结果

见 docs/功能测试报告/功能测试报告_中口径四维口径统一_2026-09-18.md:6 条正向 + 3 条回归 + 3 条负向边界,全部通过。

  • 独立《生成_中口径明细》全省 8 月总客运量 4003.5701 = 班线 1646.4801 + 公交 1436.63 + 出租城乡 493.90 + 网约车城乡 426.56;
  • 18 个地区 ×(7、8 月)总行 = Σ 该块 4 维行;累计列缓存值 = Σ1-8 月(全省 31528.0607);
  • 回归:汇总大表 17 页 0 格变化、《生成_中口径排名》0 格变化、《生成_中口径明细》仅 36 格变化(全部是目标格)。

第 3 步收尾(13:30)验证

  • 独立《生成_中口径明细》:18 地区 × 12 个月,**总行 = Σ4 维、累计 = Σ1-8 月,不一致数 0**;9~12 月数据格全空、表头保留。
  • 与汇总大表「中口径明细」页 1~8 月 704 对格 0 差异。
  • 全省 1-8 月总客运量:3733.79 / 3777.83 / 3874.44 / 3959.25 / 4115.87 / 4034.99 / 4028.32 / 4003.57;
    网约车城乡:333.39 / 294.49 / 347.23 / 335.39 / 369.27 / 383.68 / 421.46 / 426.56;累计 AA5 = 31528.0607、AA9 = 2911.47。
  • 城市级网约车城乡:武汉 0、黄石 13.599765541547697(沿用定稿,未被清空)。
  • 回归:汇总大表 17 页 0 格差异、《生成_中口径排名》**0 格差异**;
    明细件差异仅落在 总行 / 出租城乡 / 网约车城乡 行的月份列与 AA 累计列(属预期)。

网约车订单报告 WordML 导入(15:00)验证

  • 8 条用例(4 正向 / 3 负向 / 1 边界)全部通过:WordML 2025-09 导入成功、报表期留空时靠标题自动识别、真 docx 幂等无变化、.doc/xlsx 改名/非本报告 docx 均给出中文提示。
  • 数据补齐后重跑 8 月导出回归:独立《生成_中口径明细》报表期内不一致 0、报表期后仍有值 0;与汇总大表「中口径明细」页 704 对格 0 差异;全省 1-8 月总客运量 3733.79…4003.57,网约车城乡 333.39…426.56,累计 AA5=31528.0607、AA9=2911.47。
  • 排名件与明细件累计口径一致(均 31528.0606),差值 2063.45 消失。

三、遗留问题与待办

  1. ~~中口径排名同比仍是写死值~~ → 已按新口径取值(M3=0.638 / Q3=0.2247),但仍与中口径明细的 0.0581 不自洽,差值 2063.45 = 网约车 1-6 月无源;**收口办法见下方"第 3 步收口建议"**。
  2. ~~loadMidClassMap() 缺巡游出租 + 网约车两维~~ → 已补(维度 3、4),独立中口径明细四维齐全。
  3. ~~**母版缺陷待修**:中口径明细城市级公式引错页~~ → 误判,已作废:真实公式是正确的跨簿引用,母版无需修改;当时的"引错页"是控制台中文乱码误读。
  4. ~~**数据缺口**:2026-01~06 网约车订单未入库~~ → 已补齐(用户 14:21~14:49 导入 2026-01~06 + 2025-01 + 2025-10~12;2025-09 经 WordML 修复后补入)。现在 2025-01~12 + 2026-01~08 订单齐全,维度 4 全期可算,排名件/明细件口径归一。仍建议补一条「导入时订单列全空」的显式提示(《模板_网约车订单及全省总量.xlsx》那类文件现在会静默成功)。
  5. 库内 h2031「全省」行 ≠ Σ17 市州(1-8 月 27524.49 vs 24481.74,差 3042.75):业务口径问题,建议业务侧核对。
  6. 投资:模板里没有的新项目不会自动插行;明细表资金渠道分组行未入库(需加 fund_channel);同名不同项目未弹窗。
  7. 投资两张明细表(X月客运站投资明细表 / X月物流站场投资明细)生成器未做。

第 3 步收口建议(待用户拍板)

不再让 Java 各算一套,改为**一条链路出数**:母版公式链(全省行 = Σ17 市州、累计 = Σ各月、派生页跨页引用)+ 台账页写数 + 生成收尾重算。

  1. 台账页(货运 / 班线包车 / 公交 / 出租 / 网约车 / 轨道轮渡)只写当月值;
  2. 派生页(城市客运 / 中口径明细 / 公路总客运 / 中口径客运量 / 排名)**只补公式 + 重算,不单独写数**;
  3. 只有母版里本就是硬编码数值的行(中口径明细的城市级"城际城乡出租/网约车"、全省行)按四维口径回填;
  4. 独立导出件(生成_中口径明细 / 排名 / 公路旅客分市州)改为直接取汇总表对应页的值,或共用同一口径函数;
  5. ~~母版里引错页的城市级公式修一次~~ → 无需(误判,已作废);
  6. 生成后跑"生成件 vs 母版重算"逐格回归比对,差异清单落日志,作为验收基线;
  7. 库内缺失(该月该维无源)时**一律保留母版定稿值、不覆盖**——已在第 4 条改动中落地。

四、明天计划

  1. 第 3 步收口:排名件与明细件口径归一(差值 2063.45 = 2026 年 1-6 月网约车城乡)→ 排名件改取汇总表同源值 → 固化"生成件 vs 母版重算"逐格回归脚本。
  2. 网约车订单导入空列提示(页面明确提示"该期订单列为空,未写入订单数")——数据虽已补齐,但静默成功仍是隐患。
  3. 投资"新增项目插行 + 分组行入库(fund_channel)"方案落地(等用户对"模块"口径的最后确认)。
  4. 投资两张明细表生成器(X月客运站投资明细表 / X月物流站场投资明细)。

五、傍晚追加:货运月报「持续在规企业」分市州 1-8 月累计运距及同比(桌面交付)

5.1 需求与口径

用户要求:把货运月报「持续在规企业」分市州 1-8 月累计运距及同比情况整理成 Excel,生成到桌面。

  • 持续在规企业 = 2026 年 1-8 月连续 8 个月均上报 H203-2 月报的企业,**636 家**(2026 年各月上报企业数均为 636,全期一致)。
  • 累计平均运距 = 1-8 月累计货物周转量 ÷ 累计货运量(加权平均)。
  • 同比 = 2026 年 1-8 月累计运距 ÷ 2025 年 1-8 月累计运距 − 1,只在**两年均持续在规的 545 家**上计算(可比口径)。

5.2 数据与产出

数据源:traffic_audit.h2032_enterprise_monthly(2025-01 ~ 2026-08,13,056 条企业级记录)。

产出:C:\Users\郑玉洁\Desktop\货运月报_持续在规企业_分市州1-8月累计运距及同比_2026-09-18.xlsx(5 页签:说明与口径 / 分市州汇总 / 分市州分月 / 企业明细 636 行 / 口径校验),生成脚本 docs\工具\持续在规企业累计运距生成.py。

5.3 关键结果

市州 持续在规(家) 1-8月累计平均运距(公里) 同比 市州 持续在规(家) 1-8月累计平均运距(公里) 同比
武汉市 199 162.11 +13.5% 黄冈市 71 135.14 +1.1%
黄石市 20 117.63 +20.2% 咸宁市 17 113.33 −24.1%
十堰市 13 321.13 −2.9% 随州市 26 187.28 −17.1%
宜昌市 65 88.55 +2.6% 恩施州 4 130.11 +10.3%
襄阳市 81 274.50 +8.4% 仙桃市 2 65.61 不适用
鄂州市 6 38.15 −59.0% 潜江市 13 394.20 +10.9%
荆门市 40 281.41 −4.7% 天门市 4 61.02 −54.6%
孝感市 21 164.00 −7.4% 神农架林区 2 57.68 −49.1%
荆州市 52 324.47 −4.7% 全省 636 156.92 +2.9%
  • 全省累计货运量 31399.82 万吨、累计周转量 4927161.77 万吨公里,与《2026年8月规上货物周转量与平均运距分析报告》**完全一致**;8 月当月全省平均运距 155.51 公里亦与发布口径一致。
  • 累计运距明显拉长的只有武汉(+13.5%)、黄石(+20.2%);鄂州(−59.0%)、天门(−54.6%)、林区(−49.1%)、咸宁(−24.1%)、随州(−17.1%)为大幅缩短,建议业务侧关注。

5.4 测试与问题

《功能测试报告_货运月报持续在规企业分市州累计运距_2026-09-18.md》:14 条用例(8 正向 / 3 边界 / 3 负向)全部通过;2026-01~07 逐月规上货运量、周转量与汇总表「 货运」页 14 项比对 0 差异。

  • 生成脚本行号自增错位导致表头/末行被覆盖 → 已修正并逐行复核(表头 + 17 市州 + 合计共 18 行)。
  • 桌面副本第一版为修正前文件 → 已重新同步,SHA256 一致。

5.5 待办

  1. ~~请业务确认「持续在规企业」定义~~ → 用户 2026-09-18 已确认:按「2026 年 1-8 月连续 8 个月上报」= 636 家;交付件无需调整。
  2. 仙桃市 2026 年 2 家持续在规企业 2025 年 1-8 月无连续上报记录,同比留空,建议核对该市州历史上报。

5.6 订正:同比基期口径(v2,17:0x)

用户反馈「1-8 月累计运距同比不对」。核查后确认:**v1 的同比基期取错了**。

  • 汇总表「货运」页 T 列(累计同比)公式 = =S7/SUM(V7,X7,Z7,AB7,AD7,AF7,AH7,AJ7)-1,基期是 2025 年 1-8 月全部规上企业(全省 664 家);v1 用的是「两年均持续在规的 545 家」,导致同比系统性偏小。
  • 证据:DB 2025 年 1-8 月 = 33994.4483 万吨 / 5102518.9463 万吨公里,与汇总表 V7..AJ7、V8..AJ8 缓存值**逐项一致**。
指标 v1(545 家) v2(官方全口径) 发布报告
累计货运量同比 −7.96% −7.63% −7.63%
累计周转量同比 −5.30% −3.44% −3.44%
全省 1-8 月累计平均运距 158.18 / 153.73 = +2.90% 156.92 / 150.10 = +4.54% —
  • 重算后 分市州汇总 改为「2026 全口径 / 2025 全口径 / 同比」三段列;新增 口径对比 页并列两种口径,标出差异超 10 个百分点的市州。
  • 修正后市州同比:武汉 +17.0%、黄石 +35.3%、襄阳 +21.0%、宜昌 +7.4%、潜江 +5.6%、随州 +4.9%、恩施 +1.2%、荆州 −0.2%、黄冈 −0.3%、十堰 −1.9%、荆门 −6.6%、孝感 −13.3%、咸宁 −25.4%、林区 −49.1%、天门 −54.6%、鄂州 −63.1%、仙桃 −89.1%。
  • 已同步桌面交付件(SHA256 一致)。

六、夜间续作(2026-09-18 晚 ~ 2026-09-19 凌晨)

6.1 完成事项

# 事项 状态
1 中口径排名/明细同比口径修复:改为按「源表是否有该行」判定基期(markMid/midMonthHas/midCumHitMonths),去年缺月则同比留空;loadMidClassMap() 增加跨县公交兜底(passengerVolume - passengerCity);解析异常记入 midIssues 并告警 ✅ 已实测
2 网约车 2025 分摊回落:WycSplitCalc 在某月 pin 缺失/≤0 时回落 wyc_total_monthly ✅ 已编译
3 新增两张投资明细表导出:/export/investPassengerDetail、/export/investLogisticsDetail(只覆盖 H/J/K/M,I/L/G 不动母版;物流表按表内数值重算渠道/市州/合计行) ✅ 已实测
4 导入界面隐藏「网约车订单及全省总量」 ✅ 已实测
5 投资市州单表「表头取列定位」修复(findInvestHeader):扫描上界改为「表头块」(首个数据行 −1,硬上限 +12)、新增「建设进展」关键词、新增 desc=stage+1 兜底、合计/小计去空白匹配 ✅ 已实测
6 补齐 2026-08 投资源数据:客运 9 个文件 + 物流 16 个文件入 docs\投资\输入\...\8月 并重导(客运 39 行 / 物流 128 行) ✅ 已入库

6.2 测试结果摘要

  • 详见《功能测试报告_投资明细表与导入取列定位修复_2026-09-19.md》:**14 条用例全部通过**。
  • 取列修复效果:咸宁客运形象进度 0→7、宜昌客运建设阶段/形象进度 0→5/5、孝感物流 0→7、恩施物流 0→4、随州物流 0→2;咸宁「合   计」假项目已消除(40→39 行)。
  • 入库对齐抽查:孝感物流 160378/116414/13784、恩施物流 126741/41574/2116,与源文件市州小计行逐项一致。
  • 中口径排名(2026-08):全省 5.81%、武汉 4.65%、仙桃 17.23%、林区 −34.87%,与定稿一致;公交行累计同比 −28577% → +13.15%。
  • 投资明细表:客运站汇总页 0 差异、明细页 6 处;物流站场三页与修复前一致(差异仍为武汉/十堰/荆州/天门数据源缺口)。

6.3 遗留问题与待办

  1. 武汉物流项目清单与定稿不一致(库内来自《十堰汇总表》,定稿来自《2026年全省预安排计划进度情况汇总(8月)》)→ 需确认「替换武汉全部物流项目」还是「追加」。
  2. 天门物流源文件 H/J/K 为空(库内 0,定稿 16677.7/500)→ 需补源文件。
  3. 荆州/黄石「规划内/规划外」拆分口径与定稿不同(合计一致)。
  4. 中口径排名残差来自 2025 年网约车市州分摊算法,未擅改,待确认。
  5. C 组(城市客运页结构归一,需用户先在 WPS 整列删除 AJ 列)/D 组(增速排名措辞)/B4(导出前基数体检 + 弹窗 + 《数据缺失清单》页)待排期。

6.4 明日计划

  1. 落实武汉物流数据口径确认后补导;补天门物流源数据。
  2. 推进 C/D 组与 B4。
  3. 代码:今晚按用户要求**只推个人 gitee**(origin master),**不推公司 gitea**。

    6.5 遗留问题处置(2026-09-19 00:5x 用户确认)

遗留项 处置
武汉物流项目清单与定稿不一致(库内来自《十堰汇总表》,定稿来自《2026年全省预安排计划进度情况汇总(8月)》) 忽略(不做处理)
天门物流源文件 H/J/K 为空(库内 0,定稿 16677.7 / 500) 待用户明日向同事索取源数据后再导入
荆州/黄石「规划内 / 规划外」拆分口径与定稿不同(合计一致) 待用户向同事确认口径

用户 2026-09-19 00:5x 反馈:「今天先早点休息」,以上三项次日跟进。

6.6 新增一键启停(2026-09-19 00:5x)

  • 背景:用户反映页面报「数据查询失败/导入记录加载失败」。核查为后端(8090)与前端(8080)进程都已退出
    (MySQL 正常,SELECT 1 通过);原因是服务以 cmd /c ... > log 挂在启动窗口下,**关掉启动窗口就把服务带走了**。
    已重启并实测 /api/import/batches、/api/data/list 均 HTTP 200。
  • 新增 stop-dev.ps1(项目根目录):按「启动用的 cmd 父进程 + 精确命令行特征」整树 taskkill /T /F,
    兜底匹配孤儿 java(TrafficAuditApplication) / node(vue-cli-service),结束后校验 8090/8080 是否释放;
    不碰 node_repl 与用户自己的 cmd 窗口。
  • 新增桌面入口(工作区外,不入库):D:\桌面\启动交通审核系统.bat(已在跑则跳过、不在跑则拉起,带 nobrowser 参数可只启服务)、
    D:\桌面\停止交通审核系统.bat。
  • 编码坑(已修):.bat 必须 CRLF + GBK(936)(首版写了 LF,cmd 解析报错);.ps1 必须 UTF-8 with BOM
    (首版无 BOM,PS 5.1 按 ANSI 读,中文打断字符串导致 UnexpectedToken)。
  • 测试:《功能测试报告_一键启停脚本与桌面入口_2026-09-19.md》,5 条用例全部通过(在跑跳过/未跑拉起/停止释放端口/启停闭环接口 200/不误杀)。