Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# IDE-specific configs
/.vscode/*
.code-workspace
/.idea/*

# Allow run configurations / launch files
!/.idea/runConfigurations
!/.vscode/launch.json

build.tar.gz
nohup.out
.env
30 changes: 30 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
include .env

# export values in .env to be used in the shell scripts
export $(shell sed 's/=.*//' .env)

default:
$(MAKE) build

deps:
cd code && npm ci
.PHONY: deps

build: deps
cd code && npm run build
.PHONY: build

auth:
devrev profiles authenticate --org $(DEV_ORG) --usr $(USER_EMAIL) --expiry 7 # days

.PHONY: auth

deploy: auth
./code/scripts/deploy.sh
.PHONY: deploy

# Removes the latest snap-in from the org. This is useful when you want to
# re-deploy the same snap-in to the same org.
uninstall:
./code/scripts/cleanup.sh
.PHONY: uninstall
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,14 @@ Guidelines:
- Screenshots of the setup and documentation are not required.
- There are no additional requirements.
- You should put the code in the repo and share it with us.


Environment Variables

DEV_ORG=partner-devtools-pramodhm112
USER_EMAIL=
GOOGLE_CLIENT_EMAIL="service-account@my-project.iam.gserviceaccount.com"
GOOGLE_PRIVATE_KEY=""
GREENLIST_FOLDER_IDS=""
REDLIST_FOLDER_IDS=""
REDLIST_FILENAME_PATTERNS=""
147 changes: 147 additions & 0 deletions Solution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
## Project: AgileTech

1. All customer accounts must be filterable by division and team, with the team field dynamically dependent on the selected division.

``` POST https://api.devrev.ai/internal/schemas.custom.set ```

```
{
"type": "tenant_fragment",
"description": "Attributes for IT Services",
"leaf_type": "ticket",
"fields": [
{
"name": "division",
"field_type": "enum",
"allowed_values": [
"Cloud Services",
"Security",
"IT Support"
],
"ui": { "display_name": "Division" }
},
{
"name": "team",
"field_type": "enum",
"allowed_values": [
"AWS",
"Azure",
"Google Cloud",
"SOC Operations",
"Penetration Testing",
"Compliance",
"L1 Support",
"L2 Support",
"L3 Escalations"
],
"ui": { "display_name": "Team" }
}
],
"conditions": [
{
"expression": "custom_fields.division == 'Cloud Services'",
"effects": [
{
"fields": ["custom_fields.team"],
"allowed_values": [
"AWS",
"Azure",
"Google Cloud"
]
}
]
},
{
"expression": "custom_fields.division == 'Security'",
"effects": [
{
"fields": ["custom_fields.team"],
"allowed_values": [
"SOC Operations",
"Penetration Testing",
"Compliance"
]
}
]
},
{
"expression": "custom_fields.division == 'IT Support'",
"effects": [
{
"fields": ["custom_fields.team"],
"allowed_values": [
"L1 Support",
"L2 Support",
"L3 Escalations"
]
}
]
}
]
}

```
Configuration

![image](https://github.com/user-attachments/assets/25ddef7a-ae81-4609-a814-2d8c3dfbf74b)

Dependent Fields

![image](https://github.com/user-attachments/assets/a86b28c3-564d-4ec0-8fca-95cfa59088b4)

![image](https://github.com/user-attachments/assets/1987dc0e-cbf4-4cb2-bef9-4849aaab9357)

![image](https://github.com/user-attachments/assets/b22aaf5a-2a6e-4e5f-9aff-3c12700953e6)

![image](https://github.com/user-attachments/assets/f3c756d5-b6f8-4324-a0d7-de31547f081f)

2. Newly created conversations and tickets must be routed to division-specific groups of support agents in a load-balanced manner.

Workflow

![image](https://github.com/user-attachments/assets/54378643-a1ad-4197-84e7-8e692a93e4a2)

Cloud Services Division - Load Balancing

![image](https://github.com/user-attachments/assets/b11266af-1bad-43b1-a93b-40f6bf10c8ec)

Ticket Update (Groups and Owners based on Condition)

![image](https://github.com/user-attachments/assets/b6788aca-a13e-4e0b-9240-a6a7d0b2340e)

**Working of Automatic Ticket Assigment**

![image](https://github.com/user-attachments/assets/38d3aed0-ea61-46d0-a974-a466a882cbb9)


Each support agent should only have visibility into the tickets and conversations they own.

Groups

![image](https://github.com/user-attachments/assets/6dad8b50-9299-4250-bfaa-9310d05ae214)

Privileges Example

![image](https://github.com/user-attachments/assets/94ad323d-f678-43dc-8fda-fba692a87952)

3. Automated creation of pie charts visualizing the distribution of conversations and tickets across various divisions is needed.

Tickets by Division

![image](https://github.com/user-attachments/assets/e6fb1187-5e9e-4085-9ad4-1f72e19b62be)

Updated Report after new ticket creation

![image](https://github.com/user-attachments/assets/3f3e7ff6-5df3-487c-aa8d-f3148b7c6289)

Configuration for Tickets by Division

![image](https://github.com/user-attachments/assets/a5330245-1e32-4fb1-845b-1047f4a19e68)

Tickets by Team

![image](https://github.com/user-attachments/assets/cf003803-2f79-48c2-97ef-da16cf8fe37d)

Updated Report after new ticket creation

![image](https://github.com/user-attachments/assets/e1fe50dc-35e7-42c9-b26a-8955cb155ef6)
4 changes: 4 additions & 0 deletions code/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
dist
.env
extracted_files
1 change: 1 addition & 0 deletions code/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
save-exact=true
1 change: 1 addition & 0 deletions code/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
dist/**/*
15 changes: 15 additions & 0 deletions code/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"printWidth": 120,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"singleQuote": true,
"trailingComma": "es5",
"bracketSpacing": true,
"jsxSingleQuote": false,
"arrowParens": "always",
"proseWrap": "never",
"htmlWhitespaceSensitivity": "strict",
"endOfLine": "lf",
"organizeImportsSkipDestructiveCodeActions": true
}
6 changes: 6 additions & 0 deletions code/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
presets: [
['@babel/preset-env', { targets: { node: 'current' } }],
'@babel/preset-typescript',
],
};
4 changes: 4 additions & 0 deletions code/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};
6 changes: 6 additions & 0 deletions code/nodemon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"execMap": {
"ts": "ts-node",
"watch": ["src"]
}
}
Loading