hjhan
|
7a9702c707
|
fix(diag): JsVersion 纳入前端文件 mtime,修复纯前端改动缓存不刷新
根因(?otcdebug=1 排查时暴露):JsVersion 只取 bin/YLErp*.dll 的 mtime,
纯前端改 wwwroot/Scripts 而不重编 DLL 时,?v= 缓存戳不变,浏览器仍加载旧版
——即"发布了但不更新"。
修复:
- JsVersion = max(DLL mtime, wwwroot/Scripts/** mtime, wwwroot/Statics/bundles/** mtime)
- wwwroot 定位用 Directory.GetCurrentDirectory()(与 StaticUrlMiddleware 一致,
开发=项目根/部署=publish 目录),目录不存在则回退仅 DLL mtime
- BinFileVersion 保持原义(仅 DLL,用于诊断显示后端构建时间)
附带修复 git 字段:AssemblyInformationalVersion 无 +sha(如固定版本 1.0.0)时,
回退从 .git/HEAD 读取当前 commit 短 sha,不再误显示 '1.0.0'
验证:dotnet build 0 错误
|
2026-07-30 11:25:11 +08:00 |
|
hjhan
|
c97d7e7995
|
feat(diag): 可保留调试日志+版本可追溯机制(阶段0.5止血增强)
解决 EQD-6838 排查时硬编码版本号 v20260729a 散落3处、无法按需开关、
看不到实际加载缓存戳的问题。
层1 运行时开关(核心):
- HtmlUtil.cs 新增 GitCommit(读 AssemblyInformationalVersion,零新依赖)
- _MainLayout.cshtml 注入 window.ylotc.__diag(jsVersion+git+built)
- main.js 顶部新增 otcDebug 工具(banner+log),debug 默认 false 生产零输出
- swapTradeEdit.js / fastVue.base.js 硬编码标记改为 otcDebug.banner
- 开启方式:URL ?otcdebug=1(会话)或 localStorage.setItem('otcdebug','1')(持久)
层2 构建守卫:
- pre-commit 新增第三块 bundle 版本一致性检查(rebuild-bundles.py --verify)
- 修复 Windows python3 Store stub 不可用问题(优先用 python)
- 注:bundle 头部不注入 git sha(会随 commit 变化导致 verify 永久失败),
版本可追溯完全由运行时 __diag(后端注入)覆盖
层3 单测预防:
- 新增 diag.test.js(213测试之一),用 console spy 守卫开关行为
- 断言不再含硬编码 v20260729a + 防止第二套调试开关回归
验证:11 suites/213 tests 全绿,--verify 通过,C# 编译0错误
|
2026-07-30 10:06:21 +08:00 |
|