Extract business logic from gRPC handlers into a dedicated service package.
Add context support throughout for cancellation and timeouts. Move models to
their own package, remove hardcoded credentials from config, and simplify
parsers to only handle HTML parsing.
Refactor the gRPC client and task handling logic to improve modularity,
error handling, and observability.
- Split `grpc/handler.go` into specialized handler files (login,
classroom, exams, grades, schedule) to reduce complexity.
- Replace standard `log` with `log/slog` throughout the project for
structured logging.
- Refactor `grpc/client.go` to use a thread-safe connection management
pattern with `sync.RWMutex`.
- Remove the legacy `service` package and HTTP server implementation,
transitioning the application to a pure gRPC runner mode.
- Clean up `config` and `pkg/errors` to remove unused utilities and
simplify the API.
- Improve error reporting in parsers and HTTP clients by checking
response status codes.