• wenwen.tang's avatar
    test(contracts): 单测 20 项 + API 冒烟 24 项 + UI 回归 30 项;沙箱补 CONTRACT_DIR · bcbfeeba
    wenwen.tang authored
    - test_contracts.py(新,20 项):解码白名单 / 超限 / 非法 base64、存取与路径穿越、
      列值 parse/dump/describe 容错、AL 列登记、coerce、files_text、
      台账写读 + 导出 xlsx 是文件名、合同目录与备注图片目录互不干扰
    - smoke_verify_contracts.py(新,24 项,经 runner 沙箱):上传 → 查阅 200 +
      application/pdf + 字节一致 → ?dl=1 是 attachment → 写 AL → 导出 xlsx 是文件名 →
      访客上传/删 403 但可查阅 → 非法类型 400 → 穿越 404 → 清空 AL → 删文件后 404
    - ui_verify12.py(新,30 项,自带沙箱 + 真浏览器):表头「合同原件」在最右、
      只读无上传入口、编辑态「+ 合同」→ 浮层 → 真实文件选择器上传 → 三个操作齐全 →
      查阅链接带 token 且返回原字节 → 关浮层变「📎 1 份」且 pending → 保存落盘 →
      只读浮层只有查阅/下载 → 移除后 AL 清空但服务器文件仍在 → 无 console 错误
    - 沙箱常量清单补 CONTRACT_DIR(runner + ui_verify7/8/9/10/11 + check_scheduler 共 7 处),
      漏了会像 DRAFT_DIR 那样把合同写进真实 data/
    - test_rules:列数 31→32,并断言「合同原件」排最后、AJ 紧随其后
    bcbfeeba