cronJob.py starts main.py for the configured shift window and restarts it if
the process exits unexpectedly. The shell scripts provide PID-based start,
stop and restart helpers without terminating unrelated browser processes.
main.py initialises configuration, logging, the optional virtual display and
Chrome. It opens Remedy and the site-lookup application in separate browser
windows, authenticates and passes both window handles to the dispatcher.
In production, the weekly Excel plan was stored in SharePoint so authorised team members could access and update it directly. A Power Automate flow reacted to workbook changes by sending the updated file to a mailbox monitored by the GIL server. A separate server-side process handled the email and placed the workbook in the appropriate weekly-plan directory. That delivery configuration is not included in this repository.
weekplan2remedy.py locates the workbook for the current ISO week and reads the
column for the selected calendar day. It finds the appropriate team block and
returns the engineers whose role permits automatic assignment.
UserAssigned in dispatch.py combines that daily plan with MySQL history. It
maintains vendor-specific engineer lists, roles, assigned ticket counts and the
rotation position from the last assignment. The original random shuffle is
retained so the initial ordering is not permanently fixed.
The dispatcher reads the visible Remedy queue and opens each incident or task. It collects the CI, title, summary, priority and assignment information. Vendor and group selection can come from:
- numeric CI lookup in the site-information application;
- recognised configuration-item patterns;
- title and summary technology markers;
- a previously recorded manual vendor decision;
- synthetic special-project mappings.
Unresolved cases are stored and generate an email with manual decision links. The next run can reuse that decision.
assigned_user() selects the assignment group and assignee in Remedy, saves
the request and handles confirmation dialogs. Successful assignments are
written to MySQL and added to the in-memory distribution table.
The same data supports priority notifications, error reporting, a morning distribution summary and an end-of-day summary. The public mail adapter is a minimal replacement for the original internal framework.
The production MySQL data was also exposed through Grafana dashboards. These allowed the team to inspect both the current distribution and historical assignment data: which records were assigned, the receiving engineer and the number of assignments per engineer and day. The dashboards and their data-source configuration are not part of this public archive.
The repository validates the Excel parser, synthetic configuration consistency, Python syntax and privacy rules. End-to-end Selenium execution is intentionally not claimed because the original Remedy UI and related services were retired.