Heim > Web-Frontend > js-Tutorial > Code gegen die Uhr: Automatisierung des Anwesenheitsmanagements

Code gegen die Uhr: Automatisierung des Anwesenheitsmanagements

Linda Hamilton
Freigeben: 2024-12-21 12:04:10
Original
323 Leute haben es durchsucht

Willkommen zurück bei ": Code Against the Clock :!" – der Blogserie, in der ich alltägliche Aufgaben in schlanke, zeitsparende Wunderwerke verwandle. Heute freue ich mich, Ihnen ein Projekt vorzustellen, bei dem ich eine sich wiederholende, manuelle Aufgabe in ein automatisiertes Kraftpaket verwandelt habe. Möchten Sie sehen, wie Sie Zeit sparen und Ihren Arbeitsabläufen einen Hauch von Spannung verleihen können? Lasst uns eintauchen!

Die Hintergrundgeschichte

Wie viele von euch wissen, arbeite ich als Full-Stack-Entwickler bei einem Startup. Wir verwenden Keka für die Verwaltung der Mitarbeiteranwesenheit, was das manuelle Ein- und Ausstempeln jeden Tag beim Betreten und Verlassen des Büros erfordert. Das Problem? Manchmal vergesse ich, mich ein- oder auszustempeln, was dazu führt, dass meine Anwesenheit als nicht anwesend markiert wird. Das bedeutet, dass ich in Keka ein Ticket erstellen muss, um es zu korrigieren – eine mühsame Aufgabe, die ich automatisieren wollte.

Die Problemaufschlüsselung

Zuerst habe ich nach einer von Keka für diesen Zweck bereitgestellten API gesucht, aber leider wird keine angeboten. Kein Problem! Als Entwickler habe ich mich der Herausforderung gestellt, dies selbst zu lösen. Ich habe zunächst die Website von Keka analysiert, um zu verstehen, wie sie funktioniert. Mithilfe der Registerkarte „Netzwerk“ in den Entwicklertools meines Browsers habe ich den Endpunkt identifiziert, der beim Ein- und Ausstempeln ausgelöst wurde.

Ich habe ein einfaches Node.js-Skript mit fetch geschrieben, um Anfragen mit einem Bearer-Token im Header zu stellen, und es hat funktioniert. Allerdings gab es einen Haken: Der Bearer-Token verfiel täglich. Ich habe herausgefunden, dass die Website das Aktualisierungstoken im lokalen Speicher aufbewahrt, das verwendet wurde, um ein neues Bearer-Token zu erhalten, wenn das alte abgelaufen ist.

Nachdem ich mein Skript an dieses Problem angepasst hatte, stand ich vor einigen weiteren Herausforderungen:

  • Wie würde das Skript wissen, wann ich das Büro betrat?
  • Wie würde es bestimmen, wann ausgestempelt werden muss?
  • Wie werde ich über etwaige Fehler benachrichtigt und kann manuell einstempeln?

Die Lösung

Um diese Probleme anzugehen, habe ich die folgenden Lösungen entwickelt:

  1. Büroeintrittserkennung: Ich habe das Skript mit bestimmten Bürozeiten konfiguriert. Das Skript beginnt dann mit dem Versuch, sich einzustempeln, wenn diese Stunden erreicht sind.
  2. Zeitpunkt für das Ausstempeln: Ich habe im Skript eine konfigurierbare Dauer festgelegt, wie viele Stunden nach dem Einstempeln automatisch ausgestempelt werden soll.
  3. Fehlerbenachrichtigung und manuelles Einstempeln: Ich habe Slack-Benachrichtigungen in das Skript integriert. Auf diese Weise würde ich Benachrichtigungen über erfolgreiche Ein- und Ausstempelungen sowie über Fehler erhalten.
[CRON Job (Every 15 minutes)] ---> [Node.js Script]
                         \-------> [Check Time] ---> [Clock In/Out]
                         \-------> [Notify (Slack)]
Nach dem Login kopieren
Nach dem Login kopieren

Sobald alles eingerichtet war, habe ich einen Cron-Job geplant, um mein Skript alle 15 Minuten auszuführen. Dieses Setup funktionierte ein Jahr lang einwandfrei und automatisierte mein Anwesenheitsmanagement effizient.

Übergang zu einer Chrome-Erweiterung

Nach einem Jahr beschloss ich, die Lösung zu verbessern, indem ich das Skript in eine Chrome-Erweiterung konvertierte. Dies erleichterte den Austausch mit Kollegen. So funktioniert die Erweiterung:

  1. Einrichtung: Nach der Installation der Erweiterung werden Sie aufgefordert, die Ein- und Ausstiegszeiten Ihres Büros einzugeben und die Dauer anzugeben, nach der Sie ausstempeln möchten.
  2. Alarmmechanismus: Die Erweiterung stellt alle 15 Minuten einen Chrome-Alarm ein. Wenn die Einstempelzeit erreicht ist, wird die Keka-Website mit einem Abfrageparameter (?CLK_IN=true) geöffnet.
  3. Inhaltsskript: Die Erweiterung enthält ein Inhaltsskript, das die Abfrageparameter analysiert und den Ein- oder Ausstempelvorgang auslöst. Bei Erfolg wird eine Erfolgsmeldung an den Hintergrunddienst gesendet, der die Einstempelzeit aufzeichnet und den Ausstempel entsprechend plant.

Code Against the Clock : Automating Attendance Management

[CRON Job (Every 15 minutes)] ---> [Node.js Script]
                         \-------> [Check Time] ---> [Clock In/Out]
                         \-------> [Notify (Slack)]
Nach dem Login kopieren
Nach dem Login kopieren

Dieser optimierte Ansatz machte die Verwaltung meiner Anwesenheit noch einfacher!

Hinweis:Wenn Sie am Quellcode interessiert sind, können Sie sich gerne an mich wenden!

Du bist dran!

Haben Sie jemals eine Aufgabe mithilfe von Code automatisiert? Teilen Sie Ihre Erfahrungen und Tipps in den Kommentaren unten! Welche Aufgaben würden Sie gerne automatisieren? Lasst uns diskutieren!

Vielen Dank, dass Sie mich auf dieser Automatisierungsreise begleitet haben. Vergessen Sie nicht, meinen Blog zu abonnieren, um weitere Tipps und Updates zu erhalten. Viel Spaß beim Codieren!

Das obige ist der detaillierte Inhalt vonCode gegen die Uhr: Automatisierung des Anwesenheitsmanagements. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage