Files
MemRelay/projects/6553b53c-bf14-49e3-a3de-1ee2f3533d51/Checkpoint 2026-08-31 08-57-38 UTC [b439f5be00].md
T

1.7 KiB

title, type, permalink, stable_id, scope, project_id, memory_type, status, revision, restored_from_commit, created_at, updated_at, tags
title type permalink stable_id scope project_id memory_type status revision restored_from_commit created_at updated_at tags
Checkpoint 2026-08-31 08:57:38 UTC [b439f5be00] checkpoint main/projects/6553b53c-bf14-49e3-a3de-1ee2f3533d51/checkpoint-2026-08-31-08-57-38-utc-b439f5be00 12faa41a-7590-4ff8-b3c3-990b38257a50 project 6553b53c-bf14-49e3-a3de-1ee2f3533d51 checkpoint active 1 6a6a895eaf 2026-09-23T14:56:33.293882+00:00 2026-09-23T14:56:33.293926+00:00
implementation
validated
handoff

最终交接:在原空目录 E:\code\HanteleWorkTime 创建 Python CLI 自动登录工具。hantele_login.py 实现 randomStr、验证码下载、ddddocr 识别、Base64 密码、OAuth 登录、最多 N 次验证码重试、Bearer 用户信息验证;默认不输出 Token,用户信息只保留账号、姓名、角色和权限数量。requirements.txt 固定 requests/ddddocr 主版本;README.md 包含安装和参数;test_hantele_login.py 覆盖 Base64、randomStr、请求结构和敏感字段脱敏;.gitignore 排除 .venv、缓存、失败验证码和 aidocs。环境:uv 创建 Python 3.12 .venv,依赖安装成功。验证:4/4 unittest 通过,compileall 通过,两次真实登录成功,ddddocr 均首轮识别验证码成功,最终 CLI 未输出 Token、密码哈希、手机号或邮箱。目录不是 Git 仓库,未创建提交。凭据只在密码库中。下一步:基于 HanteleClient 增加具体考勤查询/提交 API;如要无人值守,在任务运行器中注入 HANTELE_USERNAME/HANTELE_PASSWORD,不写入脚本。陷阱:服务证书 SAN 为空,当前只能为该客户端显式使用 --insecure;失败验证码目录可能包含图片样本,已被 .gitignore 排除。