这个项目能做什么

## 项目简介 quick-cita-cr 是一个用于监控哥斯达黎加 Educación Vial 门户网站预约开放情况的个人工具。它使用您自己的账户凭据登录,检查您配置的实际测试(practical-test)分支,记录已查看的内容,并在出现新日期或更早日期时通知您。 README 指出,该项目已在实时门户上进行了本地验证。同时提到一个已知限制:在验证过程中,纯无头(headless)模式无法可靠地解决 Cloudflare 挑战,因此建议在无人值守部署时使用有头(headed)模式、虚拟显示器或预热的持久配置文件。 ## 报告的功能 README 列出了以下功能: - 分分支的预约监控。 - 针对新日期、更早的最佳日期以及可配置的“快速窗口”天数的警报。 - 使用 SQLite 状态记录,确保重复运行仅在发生有意义的变化时发出警报。 - 使用应用专用密码的 Gmail SMTP 通知。 - 持久化 Chrome 配置文件以保留 Cookie 和会话状态。 - 模拟人类的输入、点击、延迟和滚动。 - 通过 `undetected_chromedriver` 实现 Chrome 反检测标志。 - 基于 `uv` 的 Python 项目,包含测试、代码检查(linting)和类型检查。 - 适用于 Linux / Oracle Cloud 的 systemd 用户定时器模板。 README 的状态部分显示:有头模式下可解决 Cloudflare 挑战,持久配置文件可实现登录,实际测试流程可到达分支可用性界面,预约日期可被提取并与 SQLite 状态对比,且电子邮件通知格式运行正常。 ## 要求 - Python 3.12 或 3.13 - `uv` - Chrome 或 Chrome for Testing - 一个 Educación Vial 账户 - 实际测试流程所需的收据编号 - (可选)用于电子邮件通知的 Gmail 应用专用密码 ## 快速上手 克隆仓库,运行 `uv sync`,然后运行 `uv run quick-cita init`。密钥存储在 `~/.config/quick-cita-cr/secrets.env`(README 建议执行 `chmod 600`),分支和浏览器设置存储在 `~/.config/quick-cita-cr/config.yaml` 中。 可通过 `uv run quick-cita doctor` 进行诊断。使用 `uv run quick-cita check --headed` 可运行单次可见检查,使用 `uv run quick-cita watch --headed` 可进行持续监控。此外还有一个 `demo` 命令,可打开可见浏览器,使用持久配置文件,检查配置的分支,并在没有新警报事件时打印预约摘要。 ## 配置区域 YAML 配置涵盖三个组: - **appointment** —— 驾照类别、分支列表、`quick_window_days`,以及首次运行、新日期、更早最佳日期和窗口内通知的开关。 - **schedule** —— 检查间隔(分钟)、抖动百分比、暂停前的最大失败次数以及失败后的暂停时长。 - **browser** —— 无头标志、Chrome 可执行文件路径、配置文件目录和超时时间。 通知目前支持通过 Gmail SMTP(主机、端口、发件地址、收件人列表)发送电子邮件。ID 类型、身份证号、密码、收据编号和电子邮件凭据等密钥从环境变量或密钥文件中读取。 ## 无 sudo 安装 Chrome 对于没有系统安装 Linux Chrome 且没有 `sudo` 权限的机器,README 提供了一套流程:将 Chrome for Testing 下载到 `~/.local/share/quick-cita-cr/chrome-for-testing`,使用简短的 Python 脚本解压,并为二进制文件和 crashpad 处理程序标记可执行权限。随后将配置中的 `executable_path` 指向该解压后的二进制文件。 ## 开发与布局 开发命令包括 `uv sync --all-groups`、`ruff format`、`ruff check`、针对 `src/quick_cita_cr` 的 `mypy` 以及 `pytest`。源代码树将浏览器自动化(驱动、Cloudflare 求解器、人类行为助手)、通知后端、Typer CLI、配置和密钥模型、门户客户端、预约日期解析器、SQLite 存储以及比较快照并检测事件的监控器分组成组。测试、GitHub Actions CI、systemd 部署模板以及部署/安全文档也随之提供。 ## 安全注意事项 README 警告不要提交凭据、`.env` 文件、SQLite 状态、浏览器配置文件、Cookie、截图、日志或已认证的 HTML,并引导用户参阅 `docs/security.md`。 ## 许可证 MIT。