# zjsaaaa/automogudingcheckin architecture

> Architecture diagram of the GitHub repository zjsaaaa/automogudingcheckin, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/zjsaaaa/automogudingcheckin
- Repository: https://github.com/zjsaaaa/automogudingcheckin

## Overview

AutoMoGuDingCheckIn automates 工学云 attendance and daily, weekly, and monthly reports for configured users. A scheduled runner can invoke the task entry point; the task logic handles per-user execution, duplicate checks, report generation and submission, and result notifications. Attendance settings include holiday/custom-day rules, location variation, remarks, and photos. Internal support includes platform API/authentication, captcha solving, configuration, and image upload. The README documents these capabilities; sampled source excerpts are partial, so uncertain internal wiring is omitted.

Main entry points: [`main.py`](https://github.com/zjsaaaa/automogudingcheckin/blob/main/main.py) (Task orchestrator), [`coreApi/MainLogicApi.py`](https://github.com/zjsaaaa/automogudingcheckin/blob/main/coreApi/MainLogicApi.py) (Platform API), [`util/FileUploader.py`](https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/FileUploader.py) (Image processing), [`coreApi/AiServiceClient.py`](https://github.com/zjsaaaa/automogudingcheckin/blob/main/coreApi/AiServiceClient.py) (AI report writer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_execution["Task execution"]
  node_scheduler["Daily scheduler"]
  node_tasks["Task orchestrator<br/>[main.py]"]
  node_checkin["Attendance rules<br/>[main.py]"]
  node_reports["Report tasks<br/>[main.py]"]
end

subgraph group_platform["Platform integration"]
  node_api["Platform API<br/>[MainLogicApi.py]"]
  node_captcha["Captcha solver<br/>[CaptchaUtils.py]"]
  node_crypto["Request crypto<br/>[CryptoUtils.py]"]
end

subgraph group_content["Reports and media"]
  node_ai["AI report writer<br/>[AiServiceClient.py]"]
  node_image["Image processing<br/>[FileUploader.py]"]
  node_upload["Image upload API<br/>[FileUploadApi.py]"]
end

subgraph group_support["Configuration and notifications"]
  node_config["Config manager<br/>[Config.py]"]
  node_push["Result notifications<br/>[MessagePush.py]"]
end

node_user["Configured user"]
node_educloud{{"工学云 service"}}
node_ai_service{{"OpenAI-compatible API"}}
node_qiniu{{"Qiniu upload"}}
node_holiday{{"Holiday calendar"}}
node_push_services{{"Push and SMTP services"}}

node_scheduler -->|"invokes"| node_tasks
node_user -->|"selects config"| node_tasks
node_tasks -->|"loads settings"| node_config
node_tasks -->|"runs attendance"| node_checkin
node_tasks -->|"runs reports"| node_reports
node_checkin -->|"requests attendance"| node_api
node_reports -->|"reads and submits"| node_api
node_reports -->|"generates content"| node_ai
node_ai -.->|"requests completion"| node_ai_service
node_api -->|"sends API requests"| node_educloud
node_api -->|"solves challenges"| node_captcha
node_api -->|"signs and encrypts"| node_crypto
node_checkin -.->|"checks holidays"| node_holiday
node_tasks -->|"selects photos"| node_image
node_reports -->|"requests report photos"| node_image
node_image -->|"uploads processed images"| node_upload
node_upload -->|"transfers images"| node_qiniu
node_tasks -->|"sends task results"| node_push
node_push -->|"dispatches notifications"| node_push_services

click node_user "https://github.com/zjsaaaa/automogudingcheckin/tree/main/user"
click node_scheduler "https://github.com/zjsaaaa/automogudingcheckin/blob/main/scheduled_runner.py"
click node_tasks "https://github.com/zjsaaaa/automogudingcheckin/blob/main/main.py"
click node_checkin "https://github.com/zjsaaaa/automogudingcheckin/blob/main/main.py"
click node_reports "https://github.com/zjsaaaa/automogudingcheckin/blob/main/main.py"
click node_config "https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/Config.py"
click node_api "https://github.com/zjsaaaa/automogudingcheckin/blob/main/coreApi/MainLogicApi.py"
click node_captcha "https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/CaptchaUtils.py"
click node_crypto "https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/CryptoUtils.py"
click node_ai "https://github.com/zjsaaaa/automogudingcheckin/blob/main/coreApi/AiServiceClient.py"
click node_image "https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/FileUploader.py"
click node_upload "https://github.com/zjsaaaa/automogudingcheckin/blob/main/coreApi/FileUploadApi.py"
click node_push "https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/MessagePush.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_scheduler,node_tasks,node_checkin,node_reports,node_user toneBlue
class node_api,node_captcha,node_crypto toneAmber
class node_ai,node_image,node_upload,node_ai_service toneMint
class node_config,node_push toneRose
class node_educloud,node_qiniu,node_holiday,node_push_services toneIndigo
```

## Components

### Task execution

- [Daily scheduler](https://github.com/zjsaaaa/automogudingcheckin/blob/main/scheduled_runner.py): `scheduled_runner.py`
- [Task orchestrator](https://github.com/zjsaaaa/automogudingcheckin/blob/main/main.py): `main.py`
- [Attendance rules](https://github.com/zjsaaaa/automogudingcheckin/blob/main/main.py): `main.py`
- [Report tasks](https://github.com/zjsaaaa/automogudingcheckin/blob/main/main.py): `main.py`

### Platform integration

- [Platform API](https://github.com/zjsaaaa/automogudingcheckin/blob/main/coreApi/MainLogicApi.py): `coreApi/MainLogicApi.py`
- [Captcha solver](https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/CaptchaUtils.py): `util/CaptchaUtils.py`
- [Request crypto](https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/CryptoUtils.py): `util/CryptoUtils.py`

### Reports and media

- [AI report writer](https://github.com/zjsaaaa/automogudingcheckin/blob/main/coreApi/AiServiceClient.py): `coreApi/AiServiceClient.py`
- [Image processing](https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/FileUploader.py): `util/FileUploader.py`
- [Image upload API](https://github.com/zjsaaaa/automogudingcheckin/blob/main/coreApi/FileUploadApi.py): `coreApi/FileUploadApi.py`

### Configuration and notifications

- [Config manager](https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/Config.py): `util/Config.py`
- [Result notifications](https://github.com/zjsaaaa/automogudingcheckin/blob/main/util/MessagePush.py): `util/MessagePush.py`

### Other components

- [Configured user](https://github.com/zjsaaaa/automogudingcheckin/tree/main/user): `user`
- **工学云 service**
- **OpenAI-compatible API**
- **Qiniu upload**
- **Holiday calendar**
- **Push and SMTP services**

## Connections

- Daily scheduler → Task orchestrator: invokes
- Configured user → Task orchestrator: selects config
- Task orchestrator → Config manager: loads settings
- Task orchestrator → Attendance rules: runs attendance
- Task orchestrator → Report tasks: runs reports
- Attendance rules → Platform API: requests attendance
- Report tasks → Platform API: reads and submits
- Report tasks → AI report writer: generates content
- AI report writer → OpenAI-compatible API: requests completion
- Platform API → 工学云 service: sends API requests
- Platform API → Captcha solver: solves challenges
- Platform API → Request crypto: signs and encrypts
- Attendance rules → Holiday calendar: checks holidays
- Task orchestrator → Image processing: selects photos
- Report tasks → Image processing: requests report photos
- Image processing → Image upload API: uploads processed images
- Image upload API → Qiniu upload: transfers images
- Task orchestrator → Result notifications: sends task results
- Result notifications → Push and SMTP services: dispatches notifications
