|
|
5 days ago | |
|---|---|---|
| .. | ||
| report-previews | 5 days ago | |
| README.md | 5 days ago | |
| dependency-summary.json | 5 days ago | |
| export-fixture.pdf | 5 days ago | |
| local-page-probes.json | 5 days ago | |
| migration-plan.json | 5 days ago | |
| payroll-cutoff.png | 5 days ago | |
| probe-local-pages.cjs | 5 days ago | |
| report-ui-check.cjs | 5 days ago | |
| security-ui-check.cjs | 5 days ago | |
| security-ui-results.json | 5 days ago | |
| student-home-unavailable.png | 5 days ago | |
| teacher-home-unavailable.png | 5 days ago | |
| verification-summary.json | 5 days ago | |
| verification.log | 5 days ago | |
后续状态:用户追加授权后,配套云函数和数据库迁移已发布并完成真实接口验证,见 后端发布报告。下文保留本地修复阶段的验证记录;前端仍由用户发布。
对应 docs/qa/launch-audit-2026-10-13/README.md,修复基线 6d4e042。学生和老师共用移动应用,分别验证身份路径;后台单独构建和测试。本次没有发布前端、云函数、SQL,没有修改真实会员、课时、工资或同步数据,也没有更新正在运行的 Mac 定时任务。
| 项目 | 本地修复 | 验证与边界 |
|---|---|---|
| A01 P1 旧密码覆盖新密码 | 显式一次性迁移资格;密码版本比较;数据库触发器关闭旧回退、原子撤销旧会话;新系统网络错误不启动密码迁移 | VM 与 PGlite 测试覆盖首次迁移、拒绝重置账号/未知历史、身份不匹配、并发密码版本和会话撤销。历史不明的既有账号默认关闭旧密码回退,首次登录失败时须由管理员重置;没有批量假定其“从未改密” |
| A02 P1 迟到 401 清会话 | 对比请求 token,复核当前会话;断网/503/验证超时保留会话 | 迟到旧 token、有效当前 token、复核失败及后台会话测试通过 |
| A03 P1 密码规则 | 新建/注册/改密/重置统一 8–72 位;登录兼容已有短密码、最大 72 位 | 8/18/19/72 位客户端用例及浏览器 72 位请求;超界拒绝。后台通用重置入口同步限制上界 |
| A04 P1 临时密码 | 三端返回并执行强制改密;提供当前密码验证、新密码确认、失败保留、成功重新登录 | 前端与服务端门禁;浏览器模拟首次保存 503、重试成功;改密会撤销该账号其他会话 |
| A05 P1 工资截止核验 | 改用旧系统直接接口的成功批次/业务编号/校验和;按月份显示差异并逐条记录“保留新系统”依据,经理确认截止来源 | 缺投影/无凭据仍阻断;只有姓名/录入人差异可不影响计薪;当前月可草稿,整月同步后才可审核;新同步或源记录变化使确认失效。SQL 锁定财务来源及冲突表,提交时再次核验。不调用同步桥,不伪造 ready/checkpoint |
| A06 P1 依赖 | Angular 20.3.33/CLI 20.3.39、TS 5.9、SheetJS 官方 0.20.3、html2pdf 0.14、jsPDF 4.2 | 生产依赖扫描 0 条;完整树仍有 12 个开发工具条目,均由同一 braces 公告传播,详见下文;Excel/PDF/两端构建已回归 |
| B01 P2 失败显示假零 | 首页及用户中心无成功查询时显示“—”;余额刷新,缓存结果标明上次时间和失败 | 三端故障页面与状态测试;不把空字符串当真实零 |
| B02 P2 错误与空状态混淆 | 学生/教师课程列表及后台排课将加载、失败、真空、保留旧结果分开 | 503 浏览器矩阵无“错误同时宣称无排课”的误导;首次未成功不显示零统计 |
| B03 P2 隐私注销 | 学员申请/查询,管理员分页处理,版本冲突与帐套隔离;实际会员注销后才能登记完成;协议入口统一文章 120242/120243 | SQL 重复申请、跨帐套、版本和完成前置条件通过;申请不等于删除完成。协议内容及保留期限仍由运营发布者确认 |
| B04 P2 请求悬挂 | 三端请求统一 20 秒超时;会话复核 10 秒;写入超时提示结果待核对,无自动重放 | 悬挂请求测试释放等待;教学保存沿用原幂等键;后台操作失败后应先刷新核对 |
| B05 P2 Excel 解析 | 5 MB 压缩体、20 MB 实际展开、2000 ZIP 条目、101 列;会员 200 行,词库 2000 行;只接收 xlsx | 解压前目录核验及流式实测展开量;伪造展开大小、超行/超体积、正常压缩文件测试通过;浏览器大文件拒绝/正常预览通过 |
| B06 P2 外链 | HTTPS 精确主机名单、拒绝凭据/端口及异常编码;iframe 仅必要脚本,去掉同源/弹窗/下载能力 | URL 边界测试通过。允许域名为 test.fmode.cn、a018.2018.z01.com;旧外部页依赖额外权限的功能需发布者复核,不能任意扩大名单 |
| B07 P2 会话同步 | 监听跨标签身份/退出;身份切换清教学草稿并重新加载;正常退出撤销当前服务端 token | 单元测试覆盖跨标签切换与撤销请求。主动改密撤销全部会话;普通退出只撤销当前会话 |
| B08 P2 测试过期 | 更新课程绑定接口和缓存键;固定月份时钟;修复 HEAD 中三条测试错误嵌套;提供 verify:local 完整门禁 | 在工作区和独立暂存树副本分别检查,避免靠未提交修改才通过 |
| B09 P2 同步告警 | 最终失败通知、24 小时去重、恢复通知、保留差异显著增长提醒;只含固定文字和汇总数 | 注入通知器测试通过。安装器包含新模块,但本次没有重新安装,当前活动任务仍是旧运行器;Mac 通知权限与自然 23 点触发待发布时验收 |
| B10 P3 诊断 | 两端安全本地错误缓冲(50 条)、版本/请求编号、异常恢复提示、诊断下载;网关失败日志关联同一编号 | 不记录请求正文、token、学员资料或异常原文;测试脱敏、容量和提示去重;浏览器同时断言 pageerror 和 Angular 运行错误缓冲 |
| B11 P3 可访问性 | 登录持久 label、触控目标;后台主要图标命名;工资/专项/词库弹层焦点、Esc 与回焦 | 浏览器验证聚焦/Tab 圈定/Esc/回焦。属于关键路径抽验,不是全站无障碍认证 |
最终独立暂存树验证及命令退出状态见 verification-summary.json。
npm run verify:local:移动端 209、后台 261、服务端 169 项通过,0 失败;两端生产构建通过,11 个云函数定义语法验证通过。export-fixture.pdf),不含客户数据。升级后仍有原项目样式预算和 CommonJS 警告。Angular 20 的输出使个别既有组件 CSS 略超过 20 kB,单组件错误阈值调整为 22 kB、8 kB 警告保留;这不是体积或速度优化结论。真实设备、微信音频、长课断网恢复、生产吞吐及端到端性能仍需对应环境验收。
dependency-summary.json:生产树公告 0;完整树 12 个 high 条目来自 braces 深度嵌套模式栈耗尽公告,检查时 registry 最新 3.0.3 仍受影响、无修复版。没有强行降级 Angular 工具链去消除扫描数字。
该包只进入构建/测试链,浏览器生产包不调用它。开发服务器和 Karma 仅绑定本机回环地址,构建只使用可信仓库中的 glob;不应把开发服务器暴露公网或把用户输入作为构建模式。这里记录限定范围的风险处置,不宣称完整依赖扫描为零或该公告已修复。出现修复版后仍需升级复测。
node scripts/migrate-launch-fixes.mjs --plan 是离线清单;只有发布时才执行 --apply。脚本从环境读取 XIAOSHU_MASTER_KEY 与实际超级管理员的 XIAOSHU_MIGRATION_OPERATOR_TOKEN,不把密钥写入文档/任务;先添加 Parse 字段元数据,再在同一事务应用四份 SQL,最后删除临时迁移函数。失败时不要继续发布。migration_status 和新增改密/注销 action。旧线上网关尚未包含本次能力;本地页面接现有线上网关时,不能把它当新版功能验收环境。npm ci && npm run verify:local 生成前端,发布 dist/xiaoshu-mobile/browser、dist/xiaoshu-admin/browser。核对 HTTPS、域名、代理/CORS、SPA 回退和缓存;登录失败且密码迁移历史不明的旧账号走管理员重置,不批量重开旧密码回退。npm run sync-worker:install-mac 更新原 LaunchAgent,带入告警模块;安装的 RunAtLoad 会触发检查,不能把它当纯拷贝。凭据仍用已有 0600 文件,沿用直接接口;nightly/once/start 三个入口均已收敛到同一个安全执行器(start 为单次受控执行,持续调度由 LaunchAgent 完成)。检查 macOS 通知许可,用隔离通知或故障演练验收。实际 23 点执行仍要求 Mac 开机并登录。SQL 和新版网关是配套变更;回滚不能只撤掉账号保护触发器。应维护窗口内按已备份兼容版本成套恢复并重新验证密码、会话及财务门禁。
npm run verify:local,全部离线验证,不自动部署或同步生产。*.cjs 浏览器脚本;需要 Chrome 和 Playwright(可用 PLAYWRIGHT_MODULE 指定)。只允许本机地址及模拟接口,不能替换成生产地址跑写操作。