Pytanie Śledzenie czasu w Visual Studio Online


Czy istnieje sposób mierzenia czasu spędzonego na przypadku użycia lub zadania w Visual Studio Online? Chciałbym zatrzymać wszystko w jednym miejscu (Visual Studio Online byłby w tym przypadku), a stamtąd, aby móc generować raporty, na przykład raporty śledzenia miesięcznego czasu na użytkownika i dzienne raporty, które odzwierciedlałyby rzeczywisty czas, nad którym pracował określony przypadek użycia / zadanie w stosunku do szacowanego czasu.


11
2017-12-09 12:48


pochodzenie


Istnieje dobra dyskusja na temat opcji śledzenia czasu z Team Foundation Server i Visual Studio Online tutaj: visualstudio.uservoice.com/forums/121579-visual-studio/... - Ed Blankenship


Odpowiedzi:


Podczas tworzenia pliku Task połączone z Backlog item lub Bugpole Remaining work faktycznie jest w ciągu kilku godzin. Możesz więc ustawić to tak, by miało trochę śledzenia czasu.

Niestety, nie ma sposobu, aby ustawić faktyczny czas wykonania zadania po jego zakończeniu, o ile wiem.


5
2017-12-09 13:06



Nie ma, ponieważ system nie może naprawdę wiedzieć, co robi użytkownik. Jesteś na dobrej drodze i mogą sprawdzić swoją pracę związaną z konkretnym zadaniem / błędem / problemem, więc raporty mają sens. - Jason
@Jason Po włączeniu zadania Done może być takie pole Actual work aby użytkownicy mogli ustawić rzeczywiste godziny wykonania zadania. - Gimly
Istnieje rzeczywiste ustawienie pracy (przynajmniej z profilami CMMI). Oszacowane, pozostałe, rzeczywiste. Nie rozwiązuje to dokładnego momentu, o którym, jak sądzę, OP był proszony, ponieważ pracownik może umieścić tam wszystko. - Jason
Dzięki! Zdecydowanie spróbuję tego podejścia. Muszę mieć wszystko w jednym miejscu, więc nie ma błędów ani pominięć z powodu podwójnych dowodów. Oczywiście, jako PM, interesują mnie również pomiary (na przykład szacowanie w porównaniu z rzeczywistym czasem spędzonym na implementacji funkcji), więc możemy wyciągnąć wnioski z tych złych szacunków, a także ustalić prędkość zespołu. - Diana TM
Nie ma możliwości użycia TFS jako narzędzia do śledzenia czasu. - MrHinsh - Martin Hinshelwood


Nie, nie ma możliwości zrobienia tego po wyjęciu z pudełka w VSO lub na TFS. Takie podejście nie sprzyja skutecznemu dostarczaniu wartości. Rzeczywiście, badania pokazują, że może to być szkodliwe dla dostarczania wartości klientom.

Chociaż istnieją narzędzia firm trzecich, które podłączają się do VSO i zapewniają taką możliwość, zaleciłbym inne podejście.

Miej oddzielne śledzenie czasu w stosunku do zadań związanych z kursami. Skup się na rozliczeniach, a nie na śledzeniu czasu. Chcę wiedzieć, który klient lub projekt rozliczać, a także capex kontra opex ... Poza tym w danych jest niewielka wartość. Używam Freshbooks i z powodzeniem stosowałem Harvest w przeszłości.

Aktualizacja: jeśli jesteś konsultantem, oczywiście musisz śledzić swój czas na fakturowanie. Powinno to zostać wykonane w oddzielnym systemie z TFS.


3
2017-12-09 14:27



Jestem zdezorientowany tym. Obecnie używamy fogbugz i tworzymy obudowy dla wszystkich prac, które w tym celu robimy - mam na myśli przypadki błędów, nowe przypadki funkcji, przypadki dla wszystkich cech nowych projektów, a także zadania związane z rozwojem firmy itp. W ten sposób wiemy, jak spędzamy czas i mamy niezłą wiedzę na temat tego, jak spędzamy czas na rozliczaniu naszych klientów (wiele z naszych rozliczeń to praca czasowa, więc jest to niezbędne). Funkcja, która pozwoliła nam rejestrować czas w VSO, pozwoliłaby nam przełączyć się z fogbugz na VSO, nie rozumiem dlaczego tak wielu ludzi jest przeciwko niemu? - tomRedox
tom_redox, to w ogóle nie jest workflow mojej firmy. Nie śledzimy czasu, ponieważ nie ma w nim żadnej wartości. Jeśli zrobię dni pracy dla mojego klienta, wystawię rachunek za 1 dzień. Jeśli wykonam dwie godziny, wystawię rachunek na 2 godziny. Napotykasz ten punkt widzenia, ponieważ każda forma śledzenia czasu, a nie fakturowania, nie jest wartościowa. Jeśli Twoi klienci wymagają godzinnej szczegółowej oceny pracy, to nie ufają Tobie. Jeśli nie ufają, czy naprawdę są dla ciebie odpowiednim klientem? - MrHinsh - Martin Hinshelwood
OK, spoko, nie posuwali się tutaj ani do naszego zrozumienia, powtarzacie wielokrotnie, że jest to zły pomysł bez prawdziwego rozumowania i prawdopodobnie nie komunikujemy w pełni naszego scenariusza. Jest to prawdopodobnie niewłaściwe miejsce do dyskusji, ogranicza nas krótki charakter komentarzy. Dzięki za poświęcenie czasu na odpowiedź, zostawmy to. - tomRedox
Miło mi napisać do mnie e-mail, a my możemy omówić szczegółowo! - MrHinsh - Martin Hinshelwood
Przepraszam, że ważę stary temat, ale to mnie interesuje. Interesuje mnie również śledzenie czasu spędzanego przez naszych programistów na pracy, ale nie dlatego, że chcę rozliczać klientów (opracowujemy aplikacje do użytku wewnętrznego), ale dlatego, że chcę wiedzieć, jak działamy w porównaniu do naszych szacunków . Jeśli programista da mi szacunkową liczbę 35 godzin na pracę, chcę wiedzieć, ile czasu zajęło mu ukończenie. I chcę to zgłosić, aby uzyskać ogólny obraz tego, jak dobrze oceniamy. Jestem rozczarowany, że taki obiekt nie jest dostępny w VSO. - Philip Stratford


Używałem JIRA w przeszłości i polubiłem sposób, w jaki można było rejestrować przepracowane godziny.

Stworzyliśmy obejście w VSTS, korzystając z listy komentarzy. To nie jest eleganckie, ale działa. Jeden dodaje wartość liczbową do komentarza i jest liczony jako liczba przepracowanych godzin. Możesz zrobić to bardziej rozbudowanym za pomocą wyrażenia regularnego, ale załączam kod, który zakłada, że ​​istnieje tam liczba zmiennoprzecinkowa lub całkowita.

URL_PREFACE =  "https://yourproject.visualstudio.com/defaultcollection/"

def getTicketComments(ticketID):
    """ Gets a list of the comments (in order from oldest to newest) for a given ticket """

    url = URL_PREFACE + "_apis/wit/workitems/" + str(ticketID) + "/comments?api-version=3.0-preview&order=asc"
    jsonDict = readURL(url)

    return jsonDict["comments"]

Następnie podsumowujemy wartości, które znaleźliśmy:

def getHoursSum(ticketID):
    """ For the given ticket, gets their comments, and calculates the hours
    """
    commentList = getTicketComments(ticketID)
    hourSum = 0
    for comment in commentList:
        try:
            hourSum += float(comment["text"]) # Will break if it's not a number
        except:
            pass

return hourSum

I na koniec przechowujemy liczbę przepracowanych godzin w CompletedWork pole:

def updateHours(ticketID, completedHours):

    headers = {"Content-Type": "application/json-patch+json"}

    url = URL_PREFACE + "_apis/wit/workitems/" + str(ticketID) + "?api-version=1.0"

    body = """[
        {
            "op": "replace",
            "path": "/fields/Microsoft.VSTS.Scheduling.CompletedWork",
            "value": """ + str(completedHours) + """
        }
    ]"""

    username = 'username'  # Doesn't matter
    password = TOKEN

    # TO GET TOKEN:
    #   Log into https://yourproject.visualstudio.com/
    #   Click on your name -> My Profile
    #   In the left-hand sidebar, click on "Security"
    #   Under "Personal Accesss Tokens," click "Add"
    #   Under "Description" give your token a name (doesn't matter)
    #   Choose an expiration for your token (recommend: 1 yr)
    #   "Authorized Scopes" = "All Scopes"
    #   Click "Save"
    #   Copy the token it gives you into token field below (paste between quotes)

    session = requests.Session()
    request = requests.Request(method="PATCH", headers=headers, auth=(username, password),
                               url=url,  data=body)
    prepped = request.prepare()
    response = session.send(prepped)

    return response

(Właśnie skopiowałem i wkleiłem trochę uproszczonego kodu - musisz go zintegrować)

Kod został napisany przez mojego najlepszego kolegę @Elliptica.


1
2018-04-20 00:10