Repository navigation
Expand file tree
/
Copy pathagent-sim.json.example
More file actions
110 lines (102 loc) · 3.91 KB
/
Copy pathagent-sim.json.example
File metadata and controls
110 lines (102 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
{
"_comment": "agent-sim config. Copy to agent-sim.json. 'defaults' applies to every domain; each 'domains' entry overrides it. 'server' is a servers.json id ('default' in legacy .env mode). Times are local to 'timezone'. Ranges are [min, max]. Run `node agent-sim.js setup --server <id> --domain <d> --dry-run` first to preview the roster changes.",
"defaults": {
"engine": { "tickSec": 5, "reconcileSec": 60, "concurrency": 4, "perAgentSpacingMs": 1500, "verifySamplePct": 0.1 }
},
"domains": [
{
"server": "core2-phx.v46",
"domain": "stiedemann_casper_group",
"timezone": "US/Arizona",
"seed": 4242,
"dryRun": false,
"sla": 20,
"roster": {
"targetAgents": 80,
"queuesPerAgent": [1, 4],
"minAgentsPerQueue": 3,
"extras": { "deletePct": 0.6, "disablePct": 0.2, "idlePct": 0.2 },
"wrapUpReroll": false
},
"workday": {
"days": ["Mon", "Tue", "Wed", "Thu", "Fri"],
"shiftMode": "curve",
"curve": {
"workHours": 8,
"workJitterMin": [-5, 10],
"rampThreshold": 0.25,
"openLeadHours": 1.5,
"doneThreshold": 0.25,
"closeLagHours": 2,
"waveEveryMin": 30,
"startSpreadMin": 15,
"minWavePct": 0.05,
"minCoverage": 0.08
},
"weekendStaffingPct": 0.15,
"shifts": [
{ "name": "early", "start": "07:00", "end": "15:30", "pct": 0.35 },
{ "name": "core", "start": "08:30", "end": "17:00", "pct": 0.45 },
{ "name": "late", "start": "11:00", "end": "19:30", "pct": 0.20 }
],
"startJitterMin": [-10, 20],
"endJitterMin": [-15, 30],
"absenteeismPct": 0.06,
"lunch": { "window": ["11:00", "14:00"], "durationMin": [30, 89], "minShiftHours": 6 },
"breaks": { "count": [2, 2], "durationMin": [10, 15] },
"minGapMin": 15
},
"statuses": {
"weights": { "Break": 4, "Meeting": 2, "Web": 1, "Other": 1, "Manual-unavail": 1, "cust1": 2, "cust2": 1, "cust3": 1 },
"custom": {
"cust1": { "name": "Training", "icon": "material-symbols:school-outline-rounded", "tone": "info" },
"cust2": { "name": "Coaching", "icon": "material-symbols:groups-outline-rounded", "tone": "secondary" },
"cust3": "Callback Work"
},
"randomAwayPerHour": 0.4,
"randomAwayMin": [5, 20],
"minAwayMin": 5,
"onecallPct": 0.03,
"onecallMin": [5, 20],
"manualOfflinePct": 0.03,
"manualOfflineMin": [5, 25],
"deferWhileOnCall": true,
"maxDeferMin": 15
},
"profiles": {
"strong": { "staffing": 1.0, "skillDepth": 1.5, "wrapUpSec": [5, 15], "awayMultiplier": 0.6, "negativeBias": 0.5 },
"normal": { "staffing": 0.7, "skillDepth": 1.0, "wrapUpSec": [10, 40], "awayMultiplier": 1.0, "negativeBias": 1.0 },
"struggling": { "staffing": 0.3, "skillDepth": 0.5, "wrapUpSec": [30, 90], "awayMultiplier": 1.8, "negativeBias": 2.5 }
},
"queues": { "4006": "strong", "4009": "strong", "4008": "struggling", "4011": "struggling", "default": "normal" },
"reactive": {
"enabled": true,
"waitingThreshold": 4,
"pullReserve": true,
"reserveMin": [30, 90],
"maxReservePerQueue": 3,
"shortenBreaks": true,
"cooldownMin": 10
},
"drift": { "relogDelaySec": [30, 180], "graceSec": 90 },
"callBoost": {
"enabled": true,
"extraPeakCps": 0.3,
"talkSec": [40, 85],
"transport": "u1",
"queueWeights": { "4008": 3, "4011": 2 }
},
"dispositions": {
"enabled": true,
"pct": 0.85,
"delaySec": [5, 45],
"latePct": 0.1,
"lateMaxMin": 10,
"reasonPct": 0.9,
"notesPct": 0.4,
"seedCodes": false,
"weights": { "Resolved": 6 }
}
}
]
}