probesys / bileto Goto Github PK
View Code? Open in Web Editor NEWThe ergonomic ticketing tool for managing your Help Desk.
Home Page: https://bileto.fr
License: GNU Affero General Public License v3.0
The ergonomic ticketing tool for managing your Help Desk.
Home Page: https://bileto.fr
License: GNU Affero General Public License v3.0
Estimation: 2d
As a commercial,
I want to create a contract associated to a customer
So I can track the time spent for a customer and don't work more than what was in the contract.
The contracts are listed and created in the organizations.
The contracts are listed in the sub-organizations as well.
A contract has a name, a start and an end dates, and a number of hours. It also has private notes.
The contracts are listed in descending order of end date.
At the moment, the list shows the name, the dates and the number of hours + a status:
We need a new Contract
entity:
Three new permissions are required:
orga:see:contracts
orga:see:contracts:notes
orga:manage:contracts
As technical,
I want to answer to the requester through the interface,
so I can ask her missing info, inform her of the progress, or plan interventions.
Requirements:
As technical,
I want to change the type of the ticket (i.e. incident or request),
so I can do statistics and ensure appropriate prioritization and billing.
Estimation: 2d
Tickets must be assigned to contracts.
Most of the time, a ticket is assigned to a single contract.
However, if a contract is ended, the ticket can be assigned to a new contract.
The ongoing contract appears in the column on the right, below the priority block.
It shows the name of the contract and the number of hours in the contract.
When there is no contract, it is suggested to assign an ongoing contract (only if there is at least one).
When a ticket is created, it is automatically assigned to the ongoing contract.
If there are several ongoing contracts, no contract is assigned (it must be done manually on the ticket page).
The contract of a ticket can be changed or removed.
Two new permissions must be added:
orga:see:tickets:contracts
orga:update:tickets:contracts
The tickets and the contracts are linked via a ManyToMany
relation.
As technical,
I want to add a confidential note to a ticket,
so I can give more information to other technical users.
As a user,
I want to filter tickets by their attributes,
so I quickly find those that interest me.
As a manager,
I want to validate tickets
So I can take my responsibilities and verify people work and requests.
Requirements / comments:
As technical, requester or observer,
I want to make a link between a ticket and the assets,
so I have a tickets history of an asset.
The command make i18n-extract
doesn't delete the unused translations keys. We would need to add the --clean
flag to the translation:extract
command. Unfortunately, this flag also removes some keys that are used such as "Invalid credentials" (I think it's a bug on Symfony side).
actions/checkout
and actions/cache
must use v3
set-output
must be replacedI'll wait for actions/cache#953 to be resolved.
See warnings at https://github.com/Probesys/bileto/actions/runs/3241155029 for instance.
As technical,
I want to keep a ticket in its terminated status when I receive acknowledgments from the requester,
so I don't have to close it again.
Requirements / comments:
As technical,
I want to mark a ticket as waiting from another actor (requester or observer),
so I don't see it any longer in my "in progress" list.
Requirements / comments:
As technical,
I want to find a closed ticket,
so I can refer to it.
As technical,
I want to link tickets with each other,
so I can reference and close duplicated or related tickets with one action.
Requirements / comments:
As technical,
I want to promote an answer as a solution to a ticket,
so I can see it at a glance and let to know the requester and observers about the solution.
Requirements / comments:
As technical,
I want to assign someone to a ticket,
so the problem of the end-user is handled by someone.
Requirements:
We have a public instance of Weblate (i18n.probesys.com) that we could use to welcome contributions to translations.
There is no official Symfony translation provider for Weblate, but we may want to use m2mtech/weblate-translation-provider (the project doesn't seem to be very active though).
HTTP defines the Accept-Language
header. It can be used to select a default locale for the user.
It could be used in the LocaleSubscriber
, e.g.:
$preferredLocale = self::getPreferredLocaleFromAcceptLanguage($request);
if (!$preferredLocale) {
$preferredLocale = $this->defaultLocale;
}
$locale = $request->getSession()->get('_locale', $preferredLocale);
$request->setLocale($locale);
Alternatively, Symfony provides the set_locale_from_accept_language
option to do this automatically. It seems not to be as simple as setting it to true
because of the current setup with LocaleSubscriber
.
References:
Follow-up of #38
At the moment, the dates are formatted with format('Y-m-d')
which is not very user friendly. I'd like to offer three different options :
Dates also have to be translated.
References:
As technical,
I want to add an answer that a requester or observer gave me by a different channel,
so the ticket history stays complete and coherent
Requirements / comments:
As a user,
I want to search in the tickets,
so I quickly find those that interest me.
Requirements / comments:
Estimation: 2d
As a commercial,
I want to renew a contract
So the tech know they can continue to work for a customer.
On the contract page, a button to renew the contract must be added.
Renewing the contract is like creating a new contract with the start date beginning the next day after the end date of the renewed contract, and with the same name, duration and hours.
The user must be able to change these settings though.
A contract can be renewed in advance.
If the contract is renewed for today or before, the contract must be started with the ContractStarter service (see #27).
Bonus:
A contract can be renewed by tacit agreement.
In this case, when the contracts ends, the contract is automatically renewed.
This requires a new checkbox when creating a contract.
As technical,
I want to reopen a ticket marked as resolved (because it wasn't a solution after all),
so I have it again in my list of "in progress" tickets and treat it again.
Requirements / comments:
As assigned,
I want to see my assigned tickets,
so I know what I have to do and to be sure to answer all the problem I have the responsibility of.
Requirements / comments:
Depends on #43
Estimated time: 2 days
As a requester or observer,
I want to answer to a ticket by email,
so I can give more information about my problem and answer to the questions of the support / assigned user.
Starting from now, users will be able to add answers to existing tickets.
At point 3 of #43:
To improve the chance to find the ID, we'll insert it in three places:
Message-ID
Re: [#42] It doesn't work
)=-=-=-= Ticket #42 =-=-=-=
, or in a <div id="ticket-number">
element)As assigned,
I want to receive a notification when one of my tickets is updated
So I'm informed about the tickets which need my attention.
Requirements / comments:
Estimated time: 1 day
As technical,
I want to assign a user to a default organization,
so I can assign automatically its ticket to the correct organization.
The organization should be selectable when creating a user via a simple select box and can be set to empty value.
Specifying an "assignment organization" will not associate an authorization to this organization yet.
Otherwise, it would require a "default role" or to select a role, but we want to stick to the simplest approach at the moment.
See the related ticket #271
Also, it would be nice to be able to edit a user in order to assign them after creation.
I'll consider to include that in the 0.4-dev roadmap after having specifying all the rest.
As technical,
I want to change the history order of a ticket,
so I can adapt the timeline to my own needs.
As technical,
I want to hide events in the history of a ticket,
so I can see more clearly the answers.
As a commercial,
I want to see all the contracts
So I can easily find a contract without having to know its specific organization.
Comments / requirements:
Estimated time: 2 days
As a requester,
I want to open a ticket by email,
so I can explain and be helped with a problem that I encounter directly from my email client.
We’ll only consider the creation of tickets for now.
It means that all emails collected by the Collector will create a new ticket.
This is obviously temporary, before #36 is implemented.
Once the MailboxEmail
is saved (see #331):
As a first approach, the content of the email will be done as following:
<br>
We we’ll not clean the content to remove eventual answers in the content yet.
We’ll need the new last_error
and last_error_at
fields in MailboxEmail in order to save the potential error and display them in the administration.
Later, the admins could be notified about these errors.
Once finished, the MailboxEmail can be linked to the created ticket.
This will allow a better tracking of the tickets.
Later, the processed MailboxEmails (i.e. the ones with a related ticket_id
) will be cleaned by a scheduled task after a certain time to be determined (related to the last paragraph of #331).
I’ve decided to simply delete the MailboxEmail for now.
We’ll consider allowing any email address to open tickets later.
This is out of scope of the current specification.
See #374
Related to #294
As technical,
I want to to be reminded to assign an unassigned ticket,
so the ticket is assigned to the correct person.
Requirements / comments :
As technical,
I want to list all the tickets (except the closed ones),
so I have a global view of the work in progress.
As technical,
I want to add observers to a ticket,
so the problem can be followed by other people (e.g. the requester's hierarchy).
As technical, requester or observer,
I want to see the history of a ticket,
so I know who did what and when.
Requirements / comments:
As a commercial,
I want to receive a notification when a contract is about to end
So I can manage the business relationship with my customer peacefully and alert the techs
The alerts of a ticket (see #442) must be sent in two ways:
A user should opt-in for these notifications.
See: https://github.com/postcss/autoprefixer
This should allow to remove the at-rule-no-vendor-prefix
and property-no-vendor-prefix
config from the .stylelintrc.json
file.
As technical,
I want to see the unassigned tickets
So I can make sure all the tickets are handled by someone.
Requirements / comments:
As a commercial,
I want to end a contract
So the tech know they should no longer work for a customer.
Estimation: 3d
As technical,
I want to indicate how much time I spent on an answer,
so it allows an appropriate billing and/or to provide an analysis of the support activity (e.g. the most time-consuming types of requests)
An new button is added to the answer form in order to enter spent time.
When clicking on the button, it's replaced by an input (number type).
This number is sent with the rest of the form and create a TimeSpent
.
The TimeSpent
is associated to the current contract if it's ongoing.
The individual spent time appears in the ticket timeline.
The total charged time must appear in the contracts list and in the contract block of the ticket.
When the charged time is above the contract max hours, the contract is considered as finished.
Configure the contract to charge by step (e.g. 30 minutes) to allow the tech to indicate the real spent time and let the app to calculate the charged time e.g. 12 minutes must be charged 30 minutes.
The form to answer must be reorganized so it doesn't look cluttered.
The work has already begun (see #437), but there are still things to do:
A new entity TimeSpent
must be created:
ticket
(Ticket)time
(int)real_time
(int)contract
(?Contract)Two new permissions must be added
orga:create:tickets:time_spent
orga:see:tickets:time_spent
When the contract of the ticket is changed, a checkbox must be added to ask the user if the time already spent must be reassigned to this contract.
As technical,
I want to plan a ticket intervention,
so I can detail what I will do, plan the spent time and have an event in my calendar.
Requirements / comments:
As an admin,
I want to manage the organizations,
so organize the tickets in different structures.
As technical,
I want to save my current search and filters,
so I can reapply them quickly and save time when I need to use them often.
As a technical,
I want to open a ticket through the interface,
so I can record the users requests and ensure they are followed up.
As a requester,
I want to open a ticket through the interface,
so I can record a problem that I encounter and give more details than by email (e.g. by filling the emergency).
As technical,
I want to change the priority of a ticket,
so it gains importance in the things I have to do.
Requirements / comments:
As technical,
I want to access the previous or next ticket,
so I can navigate quickly between tickets.
As technical,
I want to be warned if I assign a ticket to myself while another user does the same,
so we are sure to not work at the same time on the same ticket.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.