[[PageOutline(2-5,Contents,pullout)]] = Create Agilo Ticket Reports == Description [http://agile42.com/cms/pages/ Agilo] is a Scrum process tool based on Trac. Every task ticket has an estimation time (measured in hours) and in a typical use case the team manager wants to know the actual working time compared with the estimated working time. That would be a metric of team member's working efficiency, so I developed this plugin for Agilo. Thanks to the Agilo developers for sharing this tool. === Solution There is a table named "ticket_change" in the database that records every ticket change. So we can perform data mining in the Trac Database: * '''Real working hours''' = ticket closed time - ticket accept time - none working time * '''Working time''' = from 9:00 to 18:00 (exactly 9 hour including 1 hour lunch time) from Monday to Friday * '''None working time''' = from 18:00 to next day 09:00 of working days, Sat, Sun, Holidays (manually configurable) === Ticket Work Flow Add a "pending" status for tickets. If you do not want to add "pending" status, it works equally well. Why add "pending" status? Sometime, we may either accept several tickets at one time in a sprint, or we could not resolve tickets at same time, or some tickets may be blocked by our customers. In that case, if we want to calculate the exact working time, we must add the "pending" status: [[Image(ticket_flow_chart2.PNG)]] Although the standard process is `O --> As --> A --> C --> R --> A --> C`, there are still some tickets that do not follow the rule. * line1 = t1 * line2 = t2 * line3 = t3 + t4 + t5 * line4 = t3 + t4 + t6 * line5 = t3 + t4 + t7 === Example '''User interface''': [[Image(ticket_report.PNG, border=2)]] '''Generated Excel Report''': [[Image(ticket_report_r16_01.PNG)]] == Bugs/Feature Requests Existing bugs and feature requests for AgiloTicketReportPlugin are [report:9?COMPONENT=AgiloTicketReportPlugin here]. If you have any issues, create a [/newticket?component=AgiloTicketReportPlugin new ticket]. [[TicketQuery(component=AgiloTicketReportPlugin&group=type,format=progress)]] == Download Download the zipped source from [export:agiloticketreportplugin here]. == Source You can check out AgiloTicketReportPlugin from [/svn/agiloticketreportplugin here] using Subversion, or [source:agiloticketreportplugin browse the source] with Trac. == Installation 1. Download the latest Python Excel library [http://sourceforge.net/projects/pyexcelerator/ pyExcelerator library] (BSD licensed) and install it. 2. Configure `TicketReport\AgiloTicketReport\ticketreport.py` line 34: If you use single project, then you can leave PROJECT_NAME_PREFIX empty: `PROJECT_NAME_PREFIX = ""` Else if you use multiple projects, for example `http://[ip]:[port]/projects/[PROJECT_NAME]`, then use something like: `PROJECT_NAME_PREFIX = "projects"` 3. Working time time set up (optional): In `TicketReport\AgiloTicketReport\gethours.py` line 12, set the start time and end time of working day, and holiday configuration. == Configuration Set the following stanza in your `trac.ini`: {{{#!ini [ticket-workflow] + pending = new,assigned,accepted,reopened -> pending + pending.permissions = TICKET_MODIFY - resolve = new,assigned,accepted,reopened -> closed - accept = new,assigned,accepted,reopened -> accepted + resolve = new,assigned,accepted,reopened,pending -> closed + accept = new,assigned,accepted,reopened,pending -> accepted }}} == Recent Changes [[ChangeLog(agiloticketreportplugin, 3)]] == Author/Contributors '''Author:''' [wiki:todjiang] [[BR]] '''Maintainer:''' [[Maintainer]] [[BR]] '''Contributors:'''