Files
zyt/artifacts/doctor-web-migration/installer-research.txt
T
2026-10-22 11:02:57 +08:00

76 lines
7.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
医生网页迁移:安装包只读调查
核查日期:2026-10-20(Asia/Shanghai)
范围:只读源码、文档、本地产物;匿名 GET 公开更新接口;HEAD 已公布安装器 URL。未读取 .env/密钥,未访问管理配置/上传凭据接口,未下载远程大包,未安装/执行/发布安装器,未修改业务代码。
Trellis:D:/web/zyt/.trellis/workflow.md 不存在。
结论
1. 有真实可复用的 Windows x64 1.4.8 安装器,且当前线上已发布、匿名 HEAD 可读取,下载入口可直接复用现有公开更新契约。不需要为了本次网页迁移再造一套包上传功能。
2. “已实现下载入口”和“包已发布”是两件事。本次包发布事实由 2026-10-20 的生产 GET/HEAD 实测支持;本地 app/dist 产物单独只能证明本地存在。未做远程整包重新哈希或真实安装验收,不把 HEAD 当成完整安装验收。
3. 现有安装器不是本轮源码的重新构建产物。其最后修改时间为 2026-10-17;可以作为已有正式桌面端的迁移入口,不应声称包含本轮尚未重新打包的源码修改。
真实已发布 Windows 安装器
公开读取地址:
GET https://admin.zhenyangtang.com.cn/adminapi/setting.desktop_workstation/check?current_version=0.0.0&platform=windows&arch=x64
HTTP 200,JSON code=1。
data.enabled=true
data.latest_version=1.4.8
data.min_version=1.4.8
data.has_update=true
data.force=true
data.can_install=true
data.title=更新说明
data.notes(现有发布说明)=1.修复无法编辑诊单\n2.诊疗台增加医助标识\n3.修复AI回复慢
data.package.type=inno_setup
data.package.filename=DoctorWorkstation-Setup-Windows-x64-1.4.8.exe
data.package.size=171474334 字节(约 163.53 MiB)
data.package.sha256=792f2273bba9f1d92d3b9e8eacabedcc53755ac003c284d648a9dca105bfb321
data.package.url=https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/uploads/desktop_package/1/20261017/1792229692103-0288326cfce9f6dc.exe
该 package.url 的匿名 HEAD 验证:
HTTP 200
Content-Type: application/x-msdownload
Content-Length: 171474334
Last-Modified: Sat, 17 Oct 2026 09:34:52 GMT
ETag: "bc4b1f4762535d4e420928518c2e1a4a-33"
Accept-Ranges: bytes
Content-Disposition: 未提供
注意:COS 多段上传 ETag 不能当作 SHA-256。跨域 <a download> 也不保证浏览器强制使用 metadata.filename;下载按钮文案应明确为 Windows 安装包及版本。
本地产物独立核验
路径:D:/web/zyt/app/dist/DoctorWorkstation-Setup-Windows-x64-1.4.8.exe
大小:171474334
最后修改:2026-10-17T17:33:43.1648862+08:00
Windows ProductVersion:1.4.8(资源字段带尾部空格)
Get-FileHash SHA256:792F2273BBA9F1D92D3B9E8EACABEDCC53755AC003C284D648A9DCA105BFB321
与本地 SHA256SUMS.txt 及生产接口 package.sha256 完全一致。
Get-AuthenticodeSignature:NotSigned(本地当前安装器未签名);不要向用户标成“已完成代码签名”。
主程序 D:/web/zyt/app/dist/DoctorWorkstation/DoctorWorkstation.exe 的 FileVersion/ProductVersion 均为 1.4.8。
便携 ZIP D:/web/zyt/app/dist/DoctorWorkstation-Windows-x64-1.4.8.zip 存在,242411630 字节;SHA256SUMS.txt 记录 DF0F80AFA29825C42323C666F0C033EC0335C83A3DA6C7723ED2FA74C819CA85。本轮没有远程 ZIP 发布证据,不应在迁移页面承诺 ZIP 已上线。
安全复用读取方式
- server/app/adminapi/controller/setting/DesktopWorkstationController.php:28 显式 notNeedLogin=['check'];check 仅调用 DesktopWorkstationLogic::check($request->get())。
- 同控制器 getConfig 不是免登录接口,并配有管理菜单权限;医生页面不要调用管理设置 getConfig,也不要读取数据库或对象存储凭据。
- 推荐网页 GET 同源 /adminapi/setting.desktop_workstation/check,固定 current_version=0.0.0、platform=windows、arch=x64,从 data.package 提取 url/filename/size/type,显示 data.latest_version。
- server/app/adminapi/logic/setting/DesktopWorkstationLogic.php:85-102 表明 package 在完整 URL/SHA 存在时返回;can_install 额外取决于 enabled 与版本比较。若希望迁移入口只分发当前已发布包,可按经过校验的 package 判断是否存在,避免把“自动更新开关关闭”误当成“没有任何包”;如果产品明确要求关闭自动更新也撤下下载,则同时要求 enabled/can_install。
- 实现时只接受 https: 的有效安装包 URL,并限制 type/文件格式为适配 Windows 的 inno_setup EXE(或明确另行支持的 archive ZIP);拒绝 javascript:/data:/空链接。链接使用 noopener/noreferrer;显示版本、适用系统、大小及必要的校验值。
- 当前已公开 package URL 无查询签名/令牌;可用配置动态取得,避免硬编码日期目录。读 GET 无需用户登录 token;也无需调用 COS STS。
- 请求失败、package 缺失或 URL 无效时,下载区显示“安装包暂未就绪,请联系管理员”,保留重试和明确的支持渠道。不要用 # 占位、猜测 URL,或把“按钮已写好”报告成“已提供安装包”。
现有打包/发布链路
- app/src/doctor_workstation/__init__.py:6、10、11:源码版本 1.4.8;DEBUG_MODE=False;公开生产根地址为 https://admin.zhenyangtang.com.cn。
- app/Build_DoctorWorkstation.bat 调用 app/scripts/package_windows.ps1;后者使用该单一版本源,构建 PyInstaller onedir,执行冻结应用/媒体门禁,生成 Inno Setup EXE、便携 ZIP、SHA256SUMS.txt。
- app/packaging/windows/doctor_workstation.iss:44、46:x64compatible,最低 Windows 10 1809(10.0.17763)。因此页面适用文案应为 Windows 10 1809+ / Windows 11 64 位;不能写 Windows 7 或笼统“所有 Windows”。
- app/README.md:12-23 及 app/packaging/README.md:34-40 已有正式打包和自动更新发布说明。
- admin/src/views/setting/desktop_workstation/index.vue 已有三个包槽 windows_x64/macos_arm64/macos_x64;Windows 默认 inno_setup。上传组件 type=desktop_package、direct,浏览器计算 SHA-256 并记录 filename/size;上传成功只填地址,点保存才 POST setConfig 发布策略。
- admin/src/components/upload/index.vue 使用 uploadDirectToCos;desktop_package 若未配置 COS 则直接报错,不回退业务服务普通上传;管理页面说明支持 EXE/ZIP、最大 2GB。
- server/app/adminapi/logic/setting/DesktopWorkstationLogic.php:48-54 将 enabled/latest_version/min_version/force_update/title/notes/packages 存于 ConfigService 的 desktop_workstation 分类。不存在需要迁移页自行创建的安装包清单文件。
- macOS 有源码打包机制及槽位,但本轮未验证 macOS 在线包;只承诺已核查的 Windows 包。
若后续线上包缺失
1. 已有健康包:使用管理设置上传/填入经过核验的 HTTPS 产物,填同版 filename/size/SHA 后保存,然后匿名 GET + HEAD 检验发布契约。
2. 需要新源码才可用:在明确版本/tag 的原生 Windows 构建环境重新打包,完成现有安装/启动/卸载 smoke,再由授权发布流程上传及保存。不可把 latest_version 改新而继续绑定旧包(app/research/server_release_diagnosis.md 和 update_install_handoff_diagnosis.md 已记录过该类问题)。
3. 生产包尚不可用时:可以完成页面下载状态和失败提示,但上线通告中的“可下载安装”必须以真实发布验证为前提。本次已找到并核实 1.4.8,因此当前无需用缺包状态作为默认交付。
关于“分阶段提醒”的界限
现有升级配置 title/notes 是桌面自动升级内容,未发现网页停用的阶段调度字段。网页迁移的公告/截止前提醒/截止后阻断应使用本轮迁移策略;下载包元数据可在各阶段复用公开 check 接口。本轮调查没有创建自动化、发送通知或修改线上升级策略。