JoinAI Support Ticket System is a Spring Boot application designed to manage customer support tickets efficiently. The system automatically assigns tickets to support agents, tracks ticket status, sends email notifications, and provides performance statistics for agents and the overall system.
- Automated Ticket Assignment: Tickets are automatically assigned to the admin with the least workload
- Email Notifications: Automatic email notifications for ticket creation, updates, and closure
- Ticket Status Tracking: Track tickets through their lifecycle (OPEN, CLOSED, etc.)
- Priority Management: Automatic priority assignment for tickets
- Performance Statistics:
- Daily, weekly, and monthly ticket statistics for agents
- Average resolution time for the entire system
- Admin Dashboard: View assigned tickets and performance metrics
- Java 17
- Spring Boot 3.4.4
- Spring Data JPA
- PostgreSQL Database
- Spring Mail for email notifications
- Lombok for reducing boilerplate code
- JMeter and Gatling for performance testing
- Java 17 or higher
- PostgreSQL 12 or higher
- Maven 3.6 or higher
- Install PostgreSQL if not already installed
- Create a database named
spring
- Configure the database connection in
application.properties
:spring.datasource.url=jdbc:postgresql://localhost:5433/spring spring.datasource.username=postgres spring.datasource.password=your_password
Configure email settings in application.properties
:
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username[email protected]
spring.mail.password=your_app_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
- Clone the repository
- Navigate to the project directory
- Build the project:
mvn clean install
- Run the application:
or
mvn spring-boot:run
java -jar target/TestAI-0.0.1-SNAPSHOT.jar
The application will start on port 8082 by default. You can change this in the application.properties
file.
- POST /ticket/launchTicket: Create a new support ticket
- POST /ticket/updateTicket: Update ticket status
- GET /ticket/getMyTickets: Get tickets assigned to the authenticated admin
- GET /ticket/ticketNotifications: Get ticket notifications for a specific email
- GET /ticket/getStats: Get overall system statistics
- GET /ticket/getMyStats: Get statistics for the authenticated admin
For further reference, please consider the following sections:
- Official Apache Maven documentation
- Spring Boot Maven Plugin Reference Guide
- Create an OCI image
- Spring Web
- Ollama
The following guides illustrate how to use some features concretely:
- Building a RESTful Web Service
- Serving Web Content with Spring MVC
- Building REST services with Spring
Due to Maven's design, elements are inherited from the parent POM to the project POM.
While most of the inheritance is fine, it also inherits unwanted elements like <license>
and <developers>
from the parent.
To prevent this, the project POM contains empty overrides for these elements.
If you manually switch to a different parent and actually want the inheritance, you need to remove those overrides.