76 lines
7.7 KiB
Plaintext
76 lines
7.7 KiB
Plaintext
医生网页迁移:安装包只读调查
|
||
核查日期: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 接口。本轮调查没有创建自动化、发送通知或修改线上升级策略。
|