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

20 lines
1.7 KiB
Markdown

---
title: Checkpoint 2026-08-31 08:57:38 UTC [b439f5be00]
type: checkpoint
permalink: main/projects/6553b53c-bf14-49e3-a3de-1ee2f3533d51/checkpoint-2026-08-31-08-57-38-utc-b439f5be00
stable_id: 12faa41a-7590-4ff8-b3c3-990b38257a50
scope: project
project_id: 6553b53c-bf14-49e3-a3de-1ee2f3533d51
memory_type: checkpoint
status: active
revision: 1
restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2
created_at: '2026-09-23T14:56:33.293882+00:00'
updated_at: '2026-09-23T14:56:33.293926+00:00'
tags:
- 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 排除。