Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ticketing models #250

Closed
45 of 49 tasks
jon-nfc opened this issue Aug 20, 2024 · 2 comments · Fixed by #270
Closed
45 of 49 tasks

Ticketing models #250

jon-nfc opened this issue Aug 20, 2024 · 2 comments · Fixed by #270
Assignees
Labels
type::feature Issue Type type::specification Design specification
Milestone

Comments

@jon-nfc
Copy link
Member

jon-nfc commented Aug 20, 2024

Create the models that will be used by ALL ticket/issue types.

Details

Intent is that one model will be used by the different "Ticket" types. Expected ticketing types are:

Comments

Details

Commenting will need to be its own model. The comments will be broken down into two distinct areas:

  • ITSM

    ITSM comments require additional fields. i.e. category, source etc

  • GIT

    GIT comments only require the type to be known. i.e. reference/action comment and a user comment. The former is more so a reference that something has occured IRT the issue/MR/PR

ITSM Comments

Comments will need to be broken down into types, proposed is:

  • comment

    basic type of comment. either a reply to ticket or another comment (discussion)

  • Task

    will have the ITIL fields for tracking work to be or has been done

  • Solution

    will have the ITIL fields for solving tickets.

Metadata

Details

Tickets require metadata to be assigned to them. This assists in working with the ticket. Proposed metadata is as follows:

  • Category

    be able to categorize tickets

  • Impact

    impact of the ticket

  • source

    ticket source helpdesk|github|gitlab|direct|phone|email etc. follow ITIL

  • Status

    status of ticket. open|closed|assigned|pending etc. ALL ITIL types

  • Urgency

    urgency of the ticket from user perspective

  • Tags/Labels

    Labels/tags to aid in filtering/classification

  • Priority

    priority of ticket

  • Project

    • Milestone
  • Organization

  • Requester / Raised By

    person whom opened the ticket

  • Watching / Subscribed Users

    Persons whom clicked subscribed or have interacted with it. i.e. added a comment

  • Assigned to

    Person(s) whom are considered as working on a ticket resolution

  • Approvals

    If the ticket requires approval and if so its approval status

Linked items

Details

All ticket types will be able to have Centurion items added. It's proposed that all models be able to be linked to a ticket and within that models details page it shows "grouped by ticket type" the tickets related to the item.

As part of "costs" tracking each ticket comment that has a cost associated to it should be able to select the item the cost is related to. this will then be used for the calculation of Total Cost of Ownership (TCO) for the item.

UI Mock up

Details

initial ideas

ticket-issue-ui-wireframe drawio

Models

Details

  • Ticket Model:

    • ID ticket number

    • status <draft|open|closed|in progress|assigned|solved|invalid>

      • will require validation by ticket type as status for types will be different
    • external ref external reference or null. i.e. github issue number

    • external_system <null|github|gitlab>

    • type ticket type <request|incident|change|problem|issue|merge_request>

    • description text, markdown

    • date_opened date opened

    • date_closed date closed

    • ?? date_edit date of last edit

  • Comment Model

    • ID comment number
    • parent_id parent comment. used for discussions
    • type comment type
    • user user whom created comment
    • body text body of comment. Markdown
    • date_created date comment created
    • date_edited date last edit
    • private is it a private comment
    • duration duration of comment. i.e. time tracking

    ITSM Fields:

    • category
    • template
    • source <helpdesk|phone|direct>
    • status tasks: <todo|done>
    • responsible_user tasks: user whom is to complete task
    • scheduled tasks: when to schedule task

Potential problems to overcome

System Referencing Differences

referencing via markdown from each proposed system is different. for example:

  • Github

    • Issue #
    • Pull Request #
    • Mention @
  • Gitlab

    • Issue uses #
    • Merge Requests use !
    • Mentions @
    • Milestone %

So as to keep the original text from the separate systems unchanged, the parsing of the markdown to render the links will have to be unique for each system. Propose the following breakdown of systems:

  • Centurion
  • Github
  • Gitlab

For commonality, referencing within centurion will be as follows:

  • # ticket
  • @ mention

Requirements

  • 🔴 History not saved for ticket model

  • Prevent related ticket circular blocks #258

    def is_valid(self) -> bool:
    is_valid = super().is_valid()
    check_db = self.Meta.model.objects.filter(
    to_ticket_id = self.cleaned_data['to_ticket_id'].id,
    from_ticket_id = self.cleaned_data['from_ticket_id'].id,
    )
    check_db_inverse = self.Meta.model.objects.filter(
    to_ticket_id = self.cleaned_data['from_ticket_id'].id,
    from_ticket_id = self.cleaned_data['to_ticket_id'].id,
    )

  • All ticket types can reference each other as either: Related, Blocked or blocking

  • Costs Tracking

    Be able to assign a cost (user time/fixed) to a comment/ticket

    • Costs for a comment be able to select the item that the cost is related to.

      This will be used to calculate the TCO for an item

  • Discussion based commenting

    A reply to a comment is added as a sub conversation to the "replied to" comment. and contains a resolve conversation button that will collapse the "discussion"

  • Ticket Slash Commands #273

    be able to use slash commands to perform an action within a ticket

  • Be able to upload files for ticket and comments #276

  • Ticket Templates #275

    Be able to create ticket templates

  • Time Tracking

    Be able to assign time tracking to a comment or ticket

  • Validation

Validation

  • organization cant be changed

  • Validation of fields by user permission

    • add permission validation
      Fields:
      • title
      • description
      • urgency
      • can add comments
      • can link own devices
      • add time tracking to comment
      • can close own ticket
    • triage permission validation
      Fields:
      • assigned
      • subscribed
      • priority
      • impact
      • project
      • add labels
      • add task comments
      • add solution comment
      • add notification comment
    • delete permission validation
      Fields:
      • set is_deleted field
    • import permission
    • implement ticket purge permission #280
      • can delete from database

basic flow:

  • only add designated fields
  • prevented from editing certain fields
  • prevented from defining certain fields

import permission:

  • can set field external_ref
  • can set field external_ref_id
  • can set date field created
  • can set date field edited
  • can set field opened_by
  • can set field subscribed_<user | team>
  • can set field assigned_<user | team>

Interface

  • 💡 show ticket number on interface
  • 💡 Show external reference on interface
  • 💡 show edited date on ticket
  • 💡 show edited date on comment
  • 💡 🔴 ticket type icons
    use same icon and colour code to ticket type

Action Comments

  • Ticket Assigned (user)
  • Ticket Assigned (team)
  • User added as watcher
  • Team added as watcher
  • Ticket added as related (on source ticket)
  • Ticket added as related (on target ticket)
  • ticket assigned to project
  • Ticket priority changed
  • Ticket urgency changed
  • Ticket impact changed
  • Ticket title changed (w/diff)
  • ticket action comment on description changed (w/diff) #279
  • milestone changed
  • roadmap changed

Links

Potential New Issues/Tasks

@jon-nfc
Copy link
Member Author

jon-nfc commented Aug 20, 2024

Feature

  • additional permissions will need to be created and planned for for the types of ticket.

@jon-nfc jon-nfc self-assigned this Aug 20, 2024
@jon-nfc jon-nfc moved this from Planning to In progress in Centurion ERP Aug 20, 2024
jon-nfc added a commit that referenced this issue Aug 20, 2024
@jon-nfc jon-nfc mentioned this issue Aug 20, 2024
6 tasks
jon-nfc added a commit that referenced this issue Aug 20, 2024
jon-nfc added a commit that referenced this issue Aug 20, 2024
jon-nfc added a commit that referenced this issue Aug 20, 2024
jon-nfc added a commit that referenced this issue Aug 23, 2024
jon-nfc added a commit that referenced this issue Aug 23, 2024
@jon-nfc
Copy link
Member Author

jon-nfc commented Aug 23, 2024

Ticket Icons

  • ticket types, use material "document". has top rh corner folded

jon-nfc added a commit that referenced this issue Sep 11, 2024
jon-nfc added a commit that referenced this issue Sep 11, 2024
py-markdown was missing a lot of the common/gfm items.

ref: #14 #96 #93 #95 #90 #250 #270
This was referenced Sep 11, 2024
jon-nfc added a commit that referenced this issue Sep 11, 2024
jon-nfc added a commit that referenced this issue Sep 12, 2024
@jon-nfc jon-nfc mentioned this issue Sep 12, 2024
7 tasks
@jon-nfc jon-nfc linked a pull request Sep 12, 2024 that will close this issue
7 tasks
@jon-nfc jon-nfc moved this from In progress to Done in Centurion ERP Sep 12, 2024
This was referenced Sep 12, 2024
@jon-nfc jon-nfc mentioned this issue Jan 26, 2025
11 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type::feature Issue Type type::specification Design specification
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

1 participant