Wie / wo berechnet / speichert Redmine die verbrauchte Zeit?

742
Thunder Rabbit

Ich habe mehrere Zeiteinträge zu einem Problem in Projekt A protokolliert, aber sie sollten zu einem Problem in Projekt B protokolliert worden sein.

Ich habe versucht, die Redmine-GUI zu verwenden, um die Zeiteinträge zu bearbeiten, die mit dem richtigen Problem verknüpft werden sollen, aber (weil sie sich in anderen Projekten befinden?) Wurde die Bearbeitung mit "ungültigem Problem" oder etwas abgelehnt.

Also habe ich mich bei mysql angemeldet und die Log-Einträge bearbeitet:

update time_entries set project_id=40, issue_id=2645 where `issue_id` = 2643; 

Die Ausgabe 2645 zeigt jetzt die protokollierten Zeiteinträge und die Gesamtzeit für verbrauchte Zeit korrekt an

Problem 2643 zeigt keine Zeiteinträge korrekt an, zeigt jedoch den alten Wert für "verbrauchte Zeit" an

Ich habe versucht, die Seite zu aktualisieren, sich ab- und wieder einzuloggen, selbst mit einem neuen Browser, aber der Wert für die verbrauchte Zeit bleibt in Ausgabe 2643 bestehen.

Ich sehe kein Feld spent_timein TABLE time_entriesoder ähnliches, wenn Sie nach dem Feldnamen in DB suchen information_schema.

select * from columns where (column_name like '%spent%' OR column_name LIKE '%time%') and table_schema = 'redmine'; 

Wie kann ich Redmine anweisen, den Wert für "verbrauchte Zeit" zu aktualisieren, nachdem Einträge in TABLE manuell bearbeitet wurden time_entries?

1
Es scheint, dass ich mich selbst verwirrt habe, weil die Ausgabe 2643 die Mutter von 2645 ist. * das ist *, warum 2643 immer noch den "alten" Wert für verbrauchte Zeit anzeigt. Thunder Rabbit vor 8 Jahren 0

2 Antworten auf die Frage

1
Josh Jobin

Die Zeiterfassung ist ziemlich schwierig. Möglicherweise haben Sie festgestellt, dass Sie eine protokollierte Zeit nicht direkt entfernen oder zurücksetzen können. Wenn Sie die verbrauchte Zeit einreichen, wird dies zu den vorherigen verbrauchten Stunden hinzugefügt. Wie Sie bereits erwähnt haben, erben alle übergeordneten Probleme die aufgewendete Zeit von ihren Unteraufgaben.

Ein ordentlicher Trick: Wenn Sie am Ende Ihrer URL ".xml" schreiben, werden einige Informationen zu dem Problem angezeigt. Wenn Sie beispielsweise zu "localhost: 8080 / redmine / issue / 500.xml" wechseln, wird eine Aufschlüsselung des Problems mit der ID 500 angezeigt. Dies gilt auch für die Gruppe von Problemen.

Um den Problemverlauf anzuzeigen, können Sie dem Link für ein gewünschtes Problem jetzt ".xml? Include = Journals" hinzufügen. Dies zeigt frühere Änderungen an und wann sie in einem Array-Format vorgenommen wurden. Leider funktioniert das nicht mit der Gruppe von Problemen, aber unter diesem Link ist ein Patch zu finden: http://www.redmine.org/issues/12746

Es gibt auch einen Edelstein namens aktive Ressource. Sie können damit Ruby-Skripte schreiben, die Probleme als Objekte im XML-Format laden können, und Sie können die gewünschten Probleme oder Felder bearbeiten, lesen oder hinzufügen. Dadurch wird die Verwendung der Datenbank vermieden und die Gefahr von Risiken verringert.

Nützlicher Link:

http://www.redmine.org/projects/redmine/wiki/Rest_api_with_ruby

Viel Glück!

-Josh

Danke für diese! Ich kann mich fast sicher daran erinnern, beim nächsten Mal .xml hinzuzufügen, das ist etwas, was ich aus Spaß machen könnte! Thunder Rabbit vor 8 Jahren 0
0
Thunder Rabbit

Wenn ich Ihre Frage richtig verstanden habe, gibt es eine Möglichkeit, dies über die Redmine-Benutzeroberfläche zu tun (wenn der Zugriff auf die Projekte korrekt ist):

  1. Ändern Sie das Projekt für eines der Probleme in dasselbe Projekt wie das andere Problem.
  2. Bearbeiten Sie die Zeitaufwendungen für das andere Problem
  3. Setzen Sie das Projekt für das ursprüngliche Problem zurück, das oben geändert wurde.

Ihre Lösung, die Änderung in MySQL durchzuführen, hat funktioniert, obwohl es riskant sein kann, wenn Sie nicht vorsichtig sind.