kamau1 commited on
Commit
bb7143c
·
1 Parent(s): aa2653d

Fix payroll stats 422 by removing duplicate /stats endpoint and correcting route ordering.

Browse files
docs/devlogs/browser/browserconsole.txt CHANGED
@@ -1,3 +1,4 @@
 
1
  chunk-276SZO74.js?v=02c37274:21551 Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
2
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
3
  react-router-dom.js?v=02c37274:4393 ⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition.
@@ -32,37 +33,74 @@ flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
32
  workLoop @ chunk-276SZO74.js?v=02c37274:197
33
  flushWork @ chunk-276SZO74.js?v=02c37274:176
34
  performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
35
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (1.31s)
36
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
37
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (392ms)
38
- core.ts:119 ℹ️ [15:26:15] [COMPONENT] Dashboard component selected {role: 'project_manager', componentName: 'ProjectManagerDashboard', componentExists: true}
 
 
 
 
39
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/analytics/user/overview
40
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/analytics/user/overview → 200 (341ms)
41
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects?page=1&per_page=100
42
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects?page=1&per_page=100 → 200 (317ms)
43
- core.ts:119 ℹ️ [15:27:49] [COMPONENT] ProjectList: Project selected {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', title: 'Atomio Fttx', status: 'active', willNavigateToSetup: false}
44
- core.ts:119 ℹ️ [15:27:49] [COMPONENT] ProjectList: Switching to project {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
45
- core.ts:119 ℹ️ [15:27:49] [AUTH] Updating user preferences {last_active_project_id: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
46
  core.ts:169 %cPUT%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
47
- core.ts:169 PUT https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (416ms)
48
- core.ts:119 ℹ️ [15:27:49] [AUTH] Preferences updated successfully {last_active_project_id: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
49
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
50
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard
51
- core.ts:119 ℹ️ [15:27:49] [COMPONENT] ProjectDashboardPage: Project dashboard loaded {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentProject: 'Atomio Fttx'}
52
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard → 200 (102.21s)
53
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (1.01s)
54
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
55
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 200 (633ms)
56
- core.ts:119 ℹ️ [15:27:52] [COMPONENT] AppLauncher: App clicked {appCode: 'timesheets', route: '/timesheets', primaryProject: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentPath: '/project/0ade6bd1-e492-4e25-b681-59f42058d29a', metaApps: Array(6)}
57
- core.ts:119 ℹ️ [15:27:52] [COMPONENT] AppLauncher: Navigation decision {hasProject: true, isInProjectContext: true, isMetaApp: false, appCode: 'timesheets', metaApps: Array(6)}
58
- core.ts:119 ℹ️ [15:27:52] [COMPONENT] AppLauncher: Navigating to project-scoped route {projectRoute: '/project/0ade6bd1-e492-4e25-b681-59f42058d29a/timesheets', appCode: 'timesheets'}
59
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
60
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14
61
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  request @ api-client.ts:124
63
  get @ api-client.ts:202
64
- getTeamStats @ timesheet.service.ts:69
65
- queryFn @ useTimesheets.ts:64
66
  fetchFn @ @tanstack_react-query.js?v=02c37274:881
67
  run @ @tanstack_react-query.js?v=02c37274:513
68
  start @ @tanstack_react-query.js?v=02c37274:555
@@ -83,46 +121,11 @@ flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
83
  workLoop @ chunk-276SZO74.js?v=02c37274:197
84
  flushWork @ chunk-276SZO74.js?v=02c37274:176
85
  performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
86
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a404 (520ms)
87
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 403 (Forbidden)
88
- request @ api-client.ts:124
89
- get @ api-client.ts:202
90
- getTimesheets @ timesheet.service.ts:48
91
- queryFn @ useTimesheets.ts:53
92
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
93
- run @ @tanstack_react-query.js?v=02c37274:513
94
- start @ @tanstack_react-query.js?v=02c37274:555
95
- fetch @ @tanstack_react-query.js?v=02c37274:969
96
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
97
- onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
98
- subscribe @ @tanstack_react-query.js?v=02c37274:24
99
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3147
100
- subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
101
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
102
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
103
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
104
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
105
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
106
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
107
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
108
- (anonymous) @ chunk-276SZO74.js?v=02c37274:19328
109
- workLoop @ chunk-276SZO74.js?v=02c37274:197
110
- flushWork @ chunk-276SZO74.js?v=02c37274:176
111
- performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
112
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 → 403 (537ms)
113
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
114
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14
115
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
116
- request @ api-client.ts:124
117
- get @ api-client.ts:202
118
- getTeamStats @ timesheet.service.ts:69
119
- queryFn @ useTimesheets.ts:64
120
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
121
- run @ @tanstack_react-query.js?v=02c37274:513
122
- (anonymous) @ @tanstack_react-query.js?v=02c37274:538
123
  Promise.then
124
- (anonymous) @ @tanstack_react-query.js?v=02c37274:534
125
- Promise.catch
126
  run @ @tanstack_react-query.js?v=02c37274:517
127
  start @ @tanstack_react-query.js?v=02c37274:555
128
  fetch @ @tanstack_react-query.js?v=02c37274:969
@@ -142,12 +145,13 @@ flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
142
  workLoop @ chunk-276SZO74.js?v=02c37274:197
143
  flushWork @ chunk-276SZO74.js?v=02c37274:176
144
  performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
145
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a404 (281ms)
146
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 403 (Forbidden)
 
147
  request @ api-client.ts:124
148
  get @ api-client.ts:202
149
- getTimesheets @ timesheet.service.ts:48
150
- queryFn @ useTimesheets.ts:53
151
  fetchFn @ @tanstack_react-query.js?v=02c37274:881
152
  run @ @tanstack_react-query.js?v=02c37274:513
153
  (anonymous) @ @tanstack_react-query.js?v=02c37274:538
@@ -173,658 +177,50 @@ flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
173
  workLoop @ chunk-276SZO74.js?v=02c37274:197
174
  flushWork @ chunk-276SZO74.js?v=02c37274:176
175
  performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
176
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 → 403 (303ms)
177
- chunk-276SZO74.js?v=02c37274:1861 The specified value "Sun Dec 07 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
178
- set @ chunk-276SZO74.js?v=02c37274:1861
179
- updateWrapper @ chunk-276SZO74.js?v=02c37274:1987
180
- updateProperties @ chunk-276SZO74.js?v=02c37274:7762
181
- commitUpdate @ chunk-276SZO74.js?v=02c37274:8419
182
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17763
183
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
184
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
185
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
186
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
187
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
188
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
189
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
190
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
191
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
192
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
193
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
194
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
195
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
196
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
197
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
198
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
199
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
200
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17813
201
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
202
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
203
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
204
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
205
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
206
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
207
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
208
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
209
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
210
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
211
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
212
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
213
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
214
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17851
215
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
216
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17818
217
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
218
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
219
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
220
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
221
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
222
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
223
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
224
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
225
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
226
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
227
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
228
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
229
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
230
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
231
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
232
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
233
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
234
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
235
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
236
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
237
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
238
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
239
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
240
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
241
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
242
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
243
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
244
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
245
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
246
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
247
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
248
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
249
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
250
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
251
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
252
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
253
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
254
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
255
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
256
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
257
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
258
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
259
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
260
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
261
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
262
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17794
263
- commitMutationEffects @ chunk-276SZO74.js?v=02c37274:17663
264
- commitRootImpl @ chunk-276SZO74.js?v=02c37274:19347
265
- commitRoot @ chunk-276SZO74.js?v=02c37274:19277
266
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
267
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
268
- (anonymous) @ chunk-276SZO74.js?v=02c37274:18627
269
- chunk-276SZO74.js?v=02c37274:1861 The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
270
- set @ chunk-276SZO74.js?v=02c37274:1861
271
- updateWrapper @ chunk-276SZO74.js?v=02c37274:1987
272
- updateProperties @ chunk-276SZO74.js?v=02c37274:7762
273
- commitUpdate @ chunk-276SZO74.js?v=02c37274:8419
274
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17763
275
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
276
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
277
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
278
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
279
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
280
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
281
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
282
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
283
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
284
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
285
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
286
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
287
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
288
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
289
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
290
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
291
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
292
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17813
293
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
294
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
295
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
296
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
297
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
298
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
299
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
300
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
301
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
302
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
303
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
304
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
305
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
306
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17851
307
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
308
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17818
309
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
310
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
311
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
312
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
313
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
314
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
315
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
316
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
317
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
318
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
319
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
320
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
321
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
322
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
323
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
324
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
325
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
326
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
327
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
328
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
329
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
330
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
331
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
332
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
333
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
334
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
335
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
336
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
337
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
338
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
339
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
340
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
341
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
342
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
343
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
344
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
345
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
346
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
347
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
348
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
349
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
350
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
351
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
352
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
353
- recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
354
- commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17794
355
- commitMutationEffects @ chunk-276SZO74.js?v=02c37274:17663
356
- commitRootImpl @ chunk-276SZO74.js?v=02c37274:19347
357
- commitRoot @ chunk-276SZO74.js?v=02c37274:19277
358
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
359
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
360
- (anonymous) @ chunk-276SZO74.js?v=02c37274:18627
361
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
362
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14
363
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
364
- request @ api-client.ts:124
365
- get @ api-client.ts:202
366
- getTeamStats @ timesheet.service.ts:69
367
- queryFn @ useTimesheets.ts:64
368
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
369
- run @ @tanstack_react-query.js?v=02c37274:513
370
- start @ @tanstack_react-query.js?v=02c37274:555
371
- fetch @ @tanstack_react-query.js?v=02c37274:969
372
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
373
- setOptions @ @tanstack_react-query.js?v=02c37274:2040
374
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3157
375
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
376
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
377
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
378
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
379
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
380
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
381
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
382
- (anonymous) @ chunk-276SZO74.js?v=02c37274:19328
383
- workLoop @ chunk-276SZO74.js?v=02c37274:197
384
- flushWork @ chunk-276SZO74.js?v=02c37274:176
385
- performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
386
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (727ms)
387
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 403 (Forbidden)
388
- request @ api-client.ts:124
389
- get @ api-client.ts:202
390
- getTimesheets @ timesheet.service.ts:48
391
- queryFn @ useTimesheets.ts:53
392
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
393
- run @ @tanstack_react-query.js?v=02c37274:513
394
- start @ @tanstack_react-query.js?v=02c37274:555
395
- fetch @ @tanstack_react-query.js?v=02c37274:969
396
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
397
- setOptions @ @tanstack_react-query.js?v=02c37274:2040
398
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3157
399
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
400
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
401
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
402
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
403
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
404
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
405
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
406
- (anonymous) @ chunk-276SZO74.js?v=02c37274:19328
407
- workLoop @ chunk-276SZO74.js?v=02c37274:197
408
- flushWork @ chunk-276SZO74.js?v=02c37274:176
409
- performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
410
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 → 403 (1.28s)
411
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
412
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
413
- request @ api-client.ts:124
414
- get @ api-client.ts:202
415
- getTeamStats @ timesheet.service.ts:69
416
- queryFn @ useTimesheets.ts:64
417
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
418
- run @ @tanstack_react-query.js?v=02c37274:513
419
- (anonymous) @ @tanstack_react-query.js?v=02c37274:538
420
- Promise.then
421
- (anonymous) @ @tanstack_react-query.js?v=02c37274:534
422
- Promise.catch
423
- run @ @tanstack_react-query.js?v=02c37274:517
424
- start @ @tanstack_react-query.js?v=02c37274:555
425
- fetch @ @tanstack_react-query.js?v=02c37274:969
426
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
427
- setOptions @ @tanstack_react-query.js?v=02c37274:2040
428
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3157
429
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
430
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
431
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
432
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
433
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
434
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
435
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
436
- (anonymous) @ chunk-276SZO74.js?v=02c37274:19328
437
- workLoop @ chunk-276SZO74.js?v=02c37274:197
438
- flushWork @ chunk-276SZO74.js?v=02c37274:176
439
- performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
440
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (247ms)
441
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14
442
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 403 (Forbidden)
443
- request @ api-client.ts:124
444
- get @ api-client.ts:202
445
- getTimesheets @ timesheet.service.ts:48
446
- queryFn @ useTimesheets.ts:53
447
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
448
- run @ @tanstack_react-query.js?v=02c37274:513
449
- (anonymous) @ @tanstack_react-query.js?v=02c37274:538
450
- Promise.then
451
- (anonymous) @ @tanstack_react-query.js?v=02c37274:534
452
- Promise.catch
453
- run @ @tanstack_react-query.js?v=02c37274:517
454
- start @ @tanstack_react-query.js?v=02c37274:555
455
- fetch @ @tanstack_react-query.js?v=02c37274:969
456
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
457
- setOptions @ @tanstack_react-query.js?v=02c37274:2040
458
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3157
459
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
460
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
461
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
462
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
463
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
464
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
465
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
466
- (anonymous) @ chunk-276SZO74.js?v=02c37274:19328
467
- workLoop @ chunk-276SZO74.js?v=02c37274:197
468
- flushWork @ chunk-276SZO74.js?v=02c37274:176
469
- performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
470
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 → 403 (300ms)
471
- TimesheetsDashboard.tsx?t=1765726152802:45 Uncaught ReferenceError: startOfWeek is not defined
472
- at TimesheetsDashboard (TimesheetsDashboard.tsx?t=1765726152802:45:30)
473
- at renderWithHooks (chunk-276SZO74.js?v=02c37274:11548:26)
474
- at updateFunctionComponent (chunk-276SZO74.js?v=02c37274:14582:28)
475
- at beginWork (chunk-276SZO74.js?v=02c37274:15924:22)
476
- at HTMLUnknownElement.callCallback2 (chunk-276SZO74.js?v=02c37274:3674:22)
477
- at Object.invokeGuardedCallbackDev (chunk-276SZO74.js?v=02c37274:3699:24)
478
- at invokeGuardedCallback (chunk-276SZO74.js?v=02c37274:3733:39)
479
- at beginWork$1 (chunk-276SZO74.js?v=02c37274:19765:15)
480
- at performUnitOfWork (chunk-276SZO74.js?v=02c37274:19198:20)
481
- at workLoopSync (chunk-276SZO74.js?v=02c37274:19137:13)
482
- TimesheetsDashboard @ TimesheetsDashboard.tsx?t=1765726152802:45
483
- renderWithHooks @ chunk-276SZO74.js?v=02c37274:11548
484
- updateFunctionComponent @ chunk-276SZO74.js?v=02c37274:14582
485
- beginWork @ chunk-276SZO74.js?v=02c37274:15924
486
- callCallback2 @ chunk-276SZO74.js?v=02c37274:3674
487
- invokeGuardedCallbackDev @ chunk-276SZO74.js?v=02c37274:3699
488
- invokeGuardedCallback @ chunk-276SZO74.js?v=02c37274:3733
489
- beginWork$1 @ chunk-276SZO74.js?v=02c37274:19765
490
- performUnitOfWork @ chunk-276SZO74.js?v=02c37274:19198
491
- workLoopSync @ chunk-276SZO74.js?v=02c37274:19137
492
- renderRootSync @ chunk-276SZO74.js?v=02c37274:19116
493
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18874
494
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
495
- flushSync @ chunk-276SZO74.js?v=02c37274:18959
496
- scheduleRefresh @ chunk-276SZO74.js?v=02c37274:20004
497
- (anonymous) @ @react-refresh:228
498
- performReactRefresh @ @react-refresh:217
499
- (anonymous) @ @react-refresh:608
500
- setTimeout
501
- (anonymous) @ @react-refresh:598
502
- validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
503
- (anonymous) @ TimesheetsDashboard.tsx:177
504
- (anonymous) @ client:34
505
- (anonymous) @ client:218
506
- (anonymous) @ client:193
507
- queueUpdate @ client:193
508
- await in queueUpdate
509
- (anonymous) @ client:642
510
- handleMessage @ client:640
511
- (anonymous) @ client:550
512
- TimesheetsDashboard.tsx?t=1765726152802:45 Uncaught ReferenceError: startOfWeek is not defined
513
- at TimesheetsDashboard (TimesheetsDashboard.tsx?t=1765726152802:45:30)
514
- at renderWithHooks (chunk-276SZO74.js?v=02c37274:11548:26)
515
- at updateFunctionComponent (chunk-276SZO74.js?v=02c37274:14582:28)
516
- at beginWork (chunk-276SZO74.js?v=02c37274:15924:22)
517
- at HTMLUnknownElement.callCallback2 (chunk-276SZO74.js?v=02c37274:3674:22)
518
- at Object.invokeGuardedCallbackDev (chunk-276SZO74.js?v=02c37274:3699:24)
519
- at invokeGuardedCallback (chunk-276SZO74.js?v=02c37274:3733:39)
520
- at beginWork$1 (chunk-276SZO74.js?v=02c37274:19765:15)
521
- at performUnitOfWork (chunk-276SZO74.js?v=02c37274:19198:20)
522
- at workLoopSync (chunk-276SZO74.js?v=02c37274:19137:13)
523
- TimesheetsDashboard @ TimesheetsDashboard.tsx?t=1765726152802:45
524
- renderWithHooks @ chunk-276SZO74.js?v=02c37274:11548
525
- updateFunctionComponent @ chunk-276SZO74.js?v=02c37274:14582
526
- beginWork @ chunk-276SZO74.js?v=02c37274:15924
527
- callCallback2 @ chunk-276SZO74.js?v=02c37274:3674
528
- invokeGuardedCallbackDev @ chunk-276SZO74.js?v=02c37274:3699
529
- invokeGuardedCallback @ chunk-276SZO74.js?v=02c37274:3733
530
- beginWork$1 @ chunk-276SZO74.js?v=02c37274:19765
531
- performUnitOfWork @ chunk-276SZO74.js?v=02c37274:19198
532
- workLoopSync @ chunk-276SZO74.js?v=02c37274:19137
533
- renderRootSync @ chunk-276SZO74.js?v=02c37274:19116
534
- recoverFromConcurrentError @ chunk-276SZO74.js?v=02c37274:18736
535
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18879
536
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
537
- flushSync @ chunk-276SZO74.js?v=02c37274:18959
538
- scheduleRefresh @ chunk-276SZO74.js?v=02c37274:20004
539
- (anonymous) @ @react-refresh:228
540
- performReactRefresh @ @react-refresh:217
541
- (anonymous) @ @react-refresh:608
542
- setTimeout
543
- (anonymous) @ @react-refresh:598
544
- validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
545
- (anonymous) @ TimesheetsDashboard.tsx:177
546
- (anonymous) @ client:34
547
- (anonymous) @ client:218
548
- (anonymous) @ client:193
549
- queueUpdate @ client:193
550
- await in queueUpdate
551
- (anonymous) @ client:642
552
- handleMessage @ client:640
553
- (anonymous) @ client:550
554
- @react-refresh:228 The above error occurred in the <TimesheetsDashboard> component:
555
-
556
- at TimesheetsDashboard (http://localhost:8080/src/pages/project/timesheets/TimesheetsDashboard.tsx?t=1765726152802:35:27)
557
- at ProtectedRoute (http://localhost:8080/src/components/auth/ProtectedRoute.tsx:30:34)
558
- at Suspense
559
- at AppShell (http://localhost:8080/src/App.tsx:181:21)
560
- at RenderedRoute (http://localhost:8080/node_modules/.vite/deps/react-router-dom.js?v=02c37274:4088:5)
561
- at Routes (http://localhost:8080/node_modules/.vite/deps/react-router-dom.js?v=02c37274:4558:5)
562
- at TopbarProvider (http://localhost:8080/src/contexts/TopbarContext.tsx:25:34)
563
- at Router (http://localhost:8080/node_modules/.vite/deps/react-router-dom.js?v=02c37274:4501:15)
564
- at BrowserRouter (http://localhost:8080/node_modules/.vite/deps/react-router-dom.js?v=02c37274:5247:5)
565
- at Provider (http://localhost:8080/node_modules/.vite/deps/chunk-6JTMSBF5.js?v=02c37274:38:15)
566
- at TooltipProvider (http://localhost:8080/node_modules/.vite/deps/@radix-ui_react-tooltip.js?v=02c37274:64:5)
567
- at ThemeProvider (http://localhost:8080/src/contexts/ThemeProvider.tsx:29:33)
568
- at LocationTrackerProvider (http://localhost:8080/src/contexts/LocationTrackerContext.tsx:34:43)
569
- at UserPreferencesProvider (http://localhost:8080/src/contexts/UserPreferencesContext.tsx:28:43)
570
- at QueryClientProvider (http://localhost:8080/node_modules/.vite/deps/@tanstack_react-query.js?v=02c37274:2934:3)
571
- at App (http://localhost:8080/src/App.tsx:243:35)
572
-
573
- Consider adding an error boundary to your tree to customize error handling behavior.
574
- Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.
575
- logCapturedError @ chunk-276SZO74.js?v=02c37274:14032
576
- update.callback @ chunk-276SZO74.js?v=02c37274:14052
577
- callCallback @ chunk-276SZO74.js?v=02c37274:11248
578
- commitUpdateQueue @ chunk-276SZO74.js?v=02c37274:11265
579
- commitLayoutEffectOnFiber @ chunk-276SZO74.js?v=02c37274:17093
580
- commitLayoutMountEffects_complete @ chunk-276SZO74.js?v=02c37274:17980
581
- commitLayoutEffects_begin @ chunk-276SZO74.js?v=02c37274:17969
582
- commitLayoutEffects @ chunk-276SZO74.js?v=02c37274:17920
583
- commitRootImpl @ chunk-276SZO74.js?v=02c37274:19353
584
- commitRoot @ chunk-276SZO74.js?v=02c37274:19277
585
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
586
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
587
- flushSync @ chunk-276SZO74.js?v=02c37274:18959
588
- scheduleRefresh @ chunk-276SZO74.js?v=02c37274:20004
589
- (anonymous) @ @react-refresh:228
590
- performReactRefresh @ @react-refresh:217
591
- (anonymous) @ @react-refresh:608
592
- setTimeout
593
- (anonymous) @ @react-refresh:598
594
- validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
595
- (anonymous) @ TimesheetsDashboard.tsx:177
596
- (anonymous) @ client:34
597
- (anonymous) @ client:218
598
- (anonymous) @ client:193
599
- queueUpdate @ client:193
600
- await in queueUpdate
601
- (anonymous) @ client:642
602
- handleMessage @ client:640
603
- (anonymous) @ client:550
604
- TimesheetsDashboard.tsx?t=1765726152802:45 Uncaught (in promise) ReferenceError: startOfWeek is not defined
605
- at TimesheetsDashboard (TimesheetsDashboard.tsx?t=1765726152802:45:30)
606
- at renderWithHooks (chunk-276SZO74.js?v=02c37274:11548:26)
607
- at updateFunctionComponent (chunk-276SZO74.js?v=02c37274:14582:28)
608
- at beginWork (chunk-276SZO74.js?v=02c37274:15924:22)
609
- at beginWork$1 (chunk-276SZO74.js?v=02c37274:19753:22)
610
- at performUnitOfWork (chunk-276SZO74.js?v=02c37274:19198:20)
611
- at workLoopSync (chunk-276SZO74.js?v=02c37274:19137:13)
612
- at renderRootSync (chunk-276SZO74.js?v=02c37274:19116:15)
613
- at recoverFromConcurrentError (chunk-276SZO74.js?v=02c37274:18736:28)
614
- at performSyncWorkOnRoot (chunk-276SZO74.js?v=02c37274:18879:28)
615
- TimesheetsDashboard @ TimesheetsDashboard.tsx?t=1765726152802:45
616
- renderWithHooks @ chunk-276SZO74.js?v=02c37274:11548
617
- updateFunctionComponent @ chunk-276SZO74.js?v=02c37274:14582
618
- beginWork @ chunk-276SZO74.js?v=02c37274:15924
619
- beginWork$1 @ chunk-276SZO74.js?v=02c37274:19753
620
- performUnitOfWork @ chunk-276SZO74.js?v=02c37274:19198
621
- workLoopSync @ chunk-276SZO74.js?v=02c37274:19137
622
- renderRootSync @ chunk-276SZO74.js?v=02c37274:19116
623
- recoverFromConcurrentError @ chunk-276SZO74.js?v=02c37274:18736
624
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18879
625
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
626
- flushSync @ chunk-276SZO74.js?v=02c37274:18959
627
- scheduleRefresh @ chunk-276SZO74.js?v=02c37274:20004
628
- (anonymous) @ @react-refresh:228
629
- performReactRefresh @ @react-refresh:217
630
- (anonymous) @ @react-refresh:608
631
- setTimeout
632
- (anonymous) @ @react-refresh:598
633
- validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
634
- (anonymous) @ TimesheetsDashboard.tsx:177
635
- (anonymous) @ client:34
636
- (anonymous) @ client:218
637
- (anonymous) @ client:193
638
- queueUpdate @ client:193
639
- await in queueUpdate
640
- (anonymous) @ client:642
641
- handleMessage @ client:640
642
- (anonymous) @ client:550
643
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
644
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14
645
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
646
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
647
- request @ api-client.ts:124
648
- get @ api-client.ts:202
649
- getTeamStats @ timesheet.service.ts:69
650
- queryFn @ useTimesheets.ts:64
651
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
652
- run @ @tanstack_react-query.js?v=02c37274:513
653
- start @ @tanstack_react-query.js?v=02c37274:555
654
- fetch @ @tanstack_react-query.js?v=02c37274:969
655
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
656
- onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
657
- subscribe @ @tanstack_react-query.js?v=02c37274:24
658
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3147
659
- subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
660
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
661
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
662
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
663
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
664
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
665
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
666
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
667
- commitRootImpl @ chunk-276SZO74.js?v=02c37274:19416
668
- commitRoot @ chunk-276SZO74.js?v=02c37274:19277
669
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
670
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
671
- flushSync @ chunk-276SZO74.js?v=02c37274:18959
672
- scheduleRoot @ chunk-276SZO74.js?v=02c37274:20015
673
- (anonymous) @ @react-refresh:208
674
- performReactRefresh @ @react-refresh:190
675
- (anonymous) @ @react-refresh:608
676
- setTimeout
677
- (anonymous) @ @react-refresh:598
678
- validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
679
- (anonymous) @ TimesheetsDashboard.tsx?t=1765726152802:181
680
- (anonymous) @ client:34
681
- (anonymous) @ client:218
682
- (anonymous) @ client:193
683
- queueUpdate @ client:193
684
- await in queueUpdate
685
- (anonymous) @ client:642
686
- handleMessage @ client:640
687
- (anonymous) @ client:550
688
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (1.34s)
689
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (1.45s)
690
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 403 (Forbidden)
691
- request @ api-client.ts:124
692
- get @ api-client.ts:202
693
- getTimesheets @ timesheet.service.ts:48
694
- queryFn @ useTimesheets.ts:53
695
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
696
- run @ @tanstack_react-query.js?v=02c37274:513
697
- start @ @tanstack_react-query.js?v=02c37274:555
698
- fetch @ @tanstack_react-query.js?v=02c37274:969
699
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
700
- onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
701
- subscribe @ @tanstack_react-query.js?v=02c37274:24
702
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3147
703
- subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
704
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
705
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
706
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
707
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
708
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
709
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
710
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
711
- commitRootImpl @ chunk-276SZO74.js?v=02c37274:19416
712
- commitRoot @ chunk-276SZO74.js?v=02c37274:19277
713
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
714
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
715
- flushSync @ chunk-276SZO74.js?v=02c37274:18959
716
- scheduleRoot @ chunk-276SZO74.js?v=02c37274:20015
717
- (anonymous) @ @react-refresh:208
718
- performReactRefresh @ @react-refresh:190
719
- (anonymous) @ @react-refresh:608
720
- setTimeout
721
- (anonymous) @ @react-refresh:598
722
- validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
723
- (anonymous) @ TimesheetsDashboard.tsx?t=1765726152802:181
724
- (anonymous) @ client:34
725
- (anonymous) @ client:218
726
- (anonymous) @ client:193
727
- queueUpdate @ client:193
728
- await in queueUpdate
729
- (anonymous) @ client:642
730
- handleMessage @ client:640
731
- (anonymous) @ client:550
732
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 → 403 (1.59s)
733
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14
734
- core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
735
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
736
- request @ api-client.ts:124
737
- get @ api-client.ts:202
738
- getTeamStats @ timesheet.service.ts:69
739
- queryFn @ useTimesheets.ts:64
740
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
741
- run @ @tanstack_react-query.js?v=02c37274:513
742
- (anonymous) @ @tanstack_react-query.js?v=02c37274:538
743
- Promise.then
744
- (anonymous) @ @tanstack_react-query.js?v=02c37274:534
745
- Promise.catch
746
- run @ @tanstack_react-query.js?v=02c37274:517
747
- start @ @tanstack_react-query.js?v=02c37274:555
748
- fetch @ @tanstack_react-query.js?v=02c37274:969
749
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
750
- onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
751
- subscribe @ @tanstack_react-query.js?v=02c37274:24
752
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3147
753
- subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
754
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
755
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
756
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
757
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
758
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
759
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
760
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
761
- commitRootImpl @ chunk-276SZO74.js?v=02c37274:19416
762
- commitRoot @ chunk-276SZO74.js?v=02c37274:19277
763
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
764
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
765
- flushSync @ chunk-276SZO74.js?v=02c37274:18959
766
- scheduleRoot @ chunk-276SZO74.js?v=02c37274:20015
767
- (anonymous) @ @react-refresh:208
768
- performReactRefresh @ @react-refresh:190
769
- (anonymous) @ @react-refresh:608
770
- setTimeout
771
- (anonymous) @ @react-refresh:598
772
- validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
773
- (anonymous) @ TimesheetsDashboard.tsx?t=1765726152802:181
774
- (anonymous) @ client:34
775
- (anonymous) @ client:218
776
- (anonymous) @ client:193
777
- queueUpdate @ client:193
778
- await in queueUpdate
779
- (anonymous) @ client:642
780
- handleMessage @ client:640
781
- (anonymous) @ client:550
782
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (1.79s)
783
- api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 403 (Forbidden)
784
- request @ api-client.ts:124
785
- get @ api-client.ts:202
786
- getTimesheets @ timesheet.service.ts:48
787
- queryFn @ useTimesheets.ts:53
788
- fetchFn @ @tanstack_react-query.js?v=02c37274:881
789
- run @ @tanstack_react-query.js?v=02c37274:513
790
- (anonymous) @ @tanstack_react-query.js?v=02c37274:538
791
- Promise.then
792
- (anonymous) @ @tanstack_react-query.js?v=02c37274:534
793
- Promise.catch
794
- run @ @tanstack_react-query.js?v=02c37274:517
795
- start @ @tanstack_react-query.js?v=02c37274:555
796
- fetch @ @tanstack_react-query.js?v=02c37274:969
797
- executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
798
- onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
799
- subscribe @ @tanstack_react-query.js?v=02c37274:24
800
- (anonymous) @ @tanstack_react-query.js?v=02c37274:3147
801
- subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
802
- commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
803
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
804
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
805
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
806
- commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
807
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
808
- flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
809
- commitRootImpl @ chunk-276SZO74.js?v=02c37274:19416
810
- commitRoot @ chunk-276SZO74.js?v=02c37274:19277
811
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
812
- flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
813
- flushSync @ chunk-276SZO74.js?v=02c37274:18959
814
- scheduleRoot @ chunk-276SZO74.js?v=02c37274:20015
815
- (anonymous) @ @react-refresh:208
816
- performReactRefresh @ @react-refresh:190
817
- (anonymous) @ @react-refresh:608
818
- setTimeout
819
- (anonymous) @ @react-refresh:598
820
- validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
821
- (anonymous) @ TimesheetsDashboard.tsx?t=1765726152802:181
822
- (anonymous) @ client:34
823
- (anonymous) @ client:218
824
- (anonymous) @ client:193
825
- queueUpdate @ client:193
826
- await in queueUpdate
827
- (anonymous) @ client:642
828
- handleMessage @ client:640
829
- (anonymous) @ client:550
830
- core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 → 403 (2.05s)
 
1
+ The deferred DOM Node could not be resolved to a valid node.
2
  chunk-276SZO74.js?v=02c37274:21551 Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
3
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
4
  react-router-dom.js?v=02c37274:4393 ⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition.
 
33
  workLoop @ chunk-276SZO74.js?v=02c37274:197
34
  flushWork @ chunk-276SZO74.js?v=02c37274:176
35
  performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
36
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (1.56s)
37
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
38
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (610ms)
39
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/documents/users/me
40
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/documents/users/me → 200 (1.14s)
41
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
42
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (2.79s)
43
+ core.ts:119 ℹ️ [18:23:46] [COMPONENT] Dashboard component selected {role: 'project_manager', componentName: 'ProjectManagerDashboard', componentExists: true}
44
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/analytics/user/overview
45
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/analytics/user/overview → 200 (2.60s)
46
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects?page=1&per_page=100
47
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects?page=1&per_page=100 → 200 (701ms)
48
+ core.ts:119 ℹ️ [18:23:54] [COMPONENT] ProjectList: Project selected {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', title: 'Atomio Fttx', status: 'active', willNavigateToSetup: false}
49
+ core.ts:119 ℹ️ [18:23:54] [COMPONENT] ProjectList: Switching to project {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
50
+ core.ts:119 ℹ️ [18:23:54] [AUTH] Updating user preferences {last_active_project_id: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
51
  core.ts:169 %cPUT%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
52
+ core.ts:169 PUT https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (748ms)
53
+ core.ts:119 ℹ️ [18:23:55] [AUTH] Preferences updated successfully {last_active_project_id: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
54
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
55
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard
56
+ core.ts:119 ℹ️ [18:23:55] [COMPONENT] ProjectDashboardPage: Project dashboard loaded {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentProject: 'Atomio Fttx'}
57
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (745ms)
58
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard → 200 (2862.77s)
59
  core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
60
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 200 (1.42s)
61
+ InviteUserModal.tsx:72 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 0, isLoadingRoles: true}
62
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles
63
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions
64
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/users?skip=0&limit=100
65
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors
66
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team
67
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations
68
+ core.ts:119 ℹ️ [18:24:29] [COMPONENT] TeamPage: Team page loaded {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentProject: 'Atomio Fttx'}
69
+ InviteUserModal.tsx:72 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 0, isLoadingRoles: true}
70
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team → 200 (1.86s)
71
+ InviteUserModal.tsx:72 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 0, isLoadingRoles: true}
72
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors → 200 (1.95s)
73
+ InviteUserModal.tsx:72 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 0, isLoadingRoles: true}
74
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions → 200 (2.15s)
75
+ InviteUserModal.tsx:72 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 0, isLoadingRoles: true}
76
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations → 200 (2.45s)
77
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/users?skip=0&limit=100 → 200 (2.47s)
78
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles → 200 (2.48s)
79
+ InviteUserModal.tsx:72 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 6, isLoadingRoles: false}
80
+ core.ts:119 ℹ️ [18:24:51] [COMPONENT] AppLauncher: App clicked {appCode: 'payroll', route: '/payroll', primaryProject: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentPath: '/project/0ade6bd1-e492-4e25-b681-59f42058d29a/team', metaApps: Array(6)}
81
+ core.ts:119 ℹ️ [18:24:51] [COMPONENT] AppLauncher: Navigation decision {hasProject: true, isInProjectContext: true, isMetaApp: false, appCode: 'payroll', metaApps: Array(6)}
82
+ core.ts:119 ℹ️ [18:24:51] [COMPONENT] AppLauncher: Navigating to global route {route: '/payroll', appCode: 'payroll'}
83
+ core.ts:119 ℹ️ [18:24:51] [COMPONENT] Dashboard component selected {role: 'project_manager', componentName: 'ProjectManagerDashboard', componentExists: true}
84
+ InviteUserModal.tsx:72 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 6, isLoadingRoles: false}
85
+ InviteUserModal.tsx:46 InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
86
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles
87
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions
88
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors
89
+ core.ts:119 ℹ️ [18:31:47] [COMPONENT] TeamPage: Team page loaded {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentProject: 'Atomio Fttx'}
90
+ InviteUserModal.tsx:72 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 6, isLoadingRoles: false}
91
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles → 200 (1.37s)
92
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions → 200 (1.53s)
93
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors → 200 (1.53s)
94
+ core.ts:119 ℹ️ [18:32:06] [COMPONENT] AppLauncher: App clicked {appCode: 'payroll', route: '/payroll', primaryProject: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentPath: '/project/0ade6bd1-e492-4e25-b681-59f42058d29a/team', metaApps: Array(6)}
95
+ core.ts:119 ℹ️ [18:32:06] [COMPONENT] AppLauncher: Navigation decision {hasProject: true, isInProjectContext: true, isMetaApp: false, appCode: 'payroll', metaApps: Array(6)}
96
+ core.ts:119 ℹ️ [18:32:06] [COMPONENT] AppLauncher: Navigating to project-scoped route {projectRoute: '/project/0ade6bd1-e492-4e25-b681-59f42058d29a/payroll', appCode: 'payroll'}
97
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/payroll/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14
98
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/payroll?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14&page=1&page_size=20
99
+ api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/payroll/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14 422 (Unprocessable Content)
100
  request @ api-client.ts:124
101
  get @ api-client.ts:202
102
+ getStats @ payroll.service.ts:22
103
+ queryFn @ usePayroll.ts:31
104
  fetchFn @ @tanstack_react-query.js?v=02c37274:881
105
  run @ @tanstack_react-query.js?v=02c37274:513
106
  start @ @tanstack_react-query.js?v=02c37274:555
 
121
  workLoop @ chunk-276SZO74.js?v=02c37274:197
122
  flushWork @ chunk-276SZO74.js?v=02c37274:176
123
  performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
124
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/payroll?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14&page=1&page_size=20200 (2.93s)
125
+ @tanstack_react-query.js?v=02c37274:932 Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ["payroll","list",{"page":1,"page_size":20,"period_end_date":"2025-12-14","period_start_date":"2025-12-08","project_id":"0ade6bd1-e492-4e25-b681-59f42058d29a"}]
126
+ onSuccess @ @tanstack_react-query.js?v=02c37274:932
127
+ resolve @ @tanstack_react-query.js?v=02c37274:475
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  Promise.then
 
 
129
  run @ @tanstack_react-query.js?v=02c37274:517
130
  start @ @tanstack_react-query.js?v=02c37274:555
131
  fetch @ @tanstack_react-query.js?v=02c37274:969
 
145
  workLoop @ chunk-276SZO74.js?v=02c37274:197
146
  flushWork @ chunk-276SZO74.js?v=02c37274:176
147
  performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
148
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/payroll/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14422 (2.94s)
149
+ core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/payroll/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14
150
+ api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/payroll/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14 422 (Unprocessable Content)
151
  request @ api-client.ts:124
152
  get @ api-client.ts:202
153
+ getStats @ payroll.service.ts:22
154
+ queryFn @ usePayroll.ts:31
155
  fetchFn @ @tanstack_react-query.js?v=02c37274:881
156
  run @ @tanstack_react-query.js?v=02c37274:513
157
  (anonymous) @ @tanstack_react-query.js?v=02c37274:538
 
177
  workLoop @ chunk-276SZO74.js?v=02c37274:197
178
  flushWork @ chunk-276SZO74.js?v=02c37274:176
179
  performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
180
+ core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/payroll/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14 → 422 (320ms)
181
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
182
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
183
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
184
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
185
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
186
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
187
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
188
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
189
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
190
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
191
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
192
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
193
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
194
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
195
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
196
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
197
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
198
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
199
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
200
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
201
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
202
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
203
+ The specified value "Mon Dec 08 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
204
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
205
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
206
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
207
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
208
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
209
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
210
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
211
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
212
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
213
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
214
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
215
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
216
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
217
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
218
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
219
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
220
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
221
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
222
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
223
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
224
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
225
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
226
+ The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
docs/devlogs/server/runtimeerror.txt CHANGED
@@ -1,963 +1,141 @@
1
- ===== Application Startup at 2025-12-13 12:50:49 =====
2
 
3
  INFO: Started server process [7]
4
  INFO: Waiting for application startup.
5
- INFO: 2025-12-13T12:51:02 - app.main: ============================================================
6
- INFO: 2025-12-13T12:51:02 - app.main: 🚀 SwiftOps API v1.0.0 | PRODUCTION
7
- INFO: 2025-12-13T12:51:02 - app.main: 📊 Dashboard: Enabled
8
- INFO: 2025-12-13T12:51:02 - app.main: ============================================================
9
- INFO: 2025-12-13T12:51:02 - app.main: 📦 Database:
10
- INFO: 2025-12-13T12:51:02 - app.main: ✓ Connected | 45 tables | 6 users
11
- INFO: 2025-12-13T12:51:02 - app.main: 💾 Cache & Sessions:
12
- INFO: 2025-12-13T12:51:03 - app.services.otp_service: ✅ OTP Service initialized with Redis storage
13
- INFO: 2025-12-13T12:51:03 - app.main: ✓ Redis: Connected
14
- INFO: 2025-12-13T12:51:03 - app.main: 🔌 External Services:
15
- INFO: 2025-12-13T12:51:04 - app.main: ✓ Cloudinary: Connected
16
- INFO: 2025-12-13T12:51:04 - app.main: ✓ Resend: Configured
17
- INFO: 2025-12-13T12:51:04 - app.main: ○ WASender: Disconnected
18
- INFO: 2025-12-13T12:51:04 - app.main: ✓ Supabase: Connected | 6 buckets
19
- INFO: 2025-12-13T12:51:04 - app.main: ============================================================
20
- INFO: 2025-12-13T12:51:04 - app.main: ✅ Startup complete | Ready to serve requests
21
- INFO: 2025-12-13T12:51:04 - app.main: ============================================================
22
  INFO: Application startup complete.
23
  INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRL+C to quit)
24
- INFO: 10.16.13.79:1515 - "GET /health HTTP/1.1" 200 OK
25
- INFO: 10.16.13.79:33230 - "GET /health HTTP/1.1" 200 OK
26
- INFO: 10.16.37.13:29054 - "GET /health HTTP/1.1" 200 OK
27
- INFO: 10.16.37.13:60015 - "GET /health HTTP/1.1" 200 OK
28
- INFO: 10.16.37.13:15374 - "GET /health HTTP/1.1" 200 OK
29
- INFO: 10.16.13.79:51701 - "GET /health HTTP/1.1" 200 OK
30
- INFO: 10.16.37.13:62346 - "GET /health HTTP/1.1" 200 OK
31
- INFO: 10.16.13.79:16683 - "GET /health HTTP/1.1" 200 OK
32
- INFO: 2025-12-13T12:55:53 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
33
- INFO: 2025-12-13T12:55:53 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
34
- INFO: 10.16.13.79:50630 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 200 OK
35
- INFO: 10.16.37.13:31510 - "GET /health HTTP/1.1" 200 OK
36
- INFO: 10.16.37.13:44472 - "GET /health HTTP/1.1" 200 OK
37
- INFO: 2025-12-13T12:57:05 - app.services.timesheet_realtime_service: Timesheet 7d9fa491-c16d-42b2-8115-b02d98873b64 updated for assignment_created. Entity: ticket_assignment:cef4dc07-81ee-402e-b385-b27198523108
38
- INFO: 2025-12-13T12:57:05 - app.services.ticket_assignment_service: Ticket 11367b6d-6d4e-435f-9c8e-f03ae90d429e assigned to viya - notification queued
39
- INFO: 10.16.37.13:44472 - "POST /api/v1/ticket-assignments/tickets/11367b6d-6d4e-435f-9c8e-f03ae90d429e/assign HTTP/1.1" 201 Created
40
- INFO: 10.16.13.79:14199 - "GET /api/v1/tickets/11367b6d-6d4e-435f-9c8e-f03ae90d429e/detail HTTP/1.1" 200 OK
41
- INFO: 10.16.37.13:38714 - "GET /health HTTP/1.1" 200 OK
42
- INFO: 2025-12-13T12:57:25 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
43
- INFO: 2025-12-13T12:57:25 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
44
- INFO: 10.16.37.13:27734 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
45
- INFO: 2025-12-13T12:57:25 - app.services.ticket_service: Listed 6 tickets (total: 6) for user 43b778b0-2062-4724-abbb-916a4835a9b0
46
- INFO: 10.16.13.79:21909 - "GET /api/v1/tickets?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page=1&page_size=50&status=open%2Cpending_review HTTP/1.1" 200 OK
47
- INFO: 10.16.13.79:27642 - "GET /api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&status=open%2Cpending_review HTTP/1.1" 200 OK
48
- INFO: 2025-12-13T12:57:28 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
49
- INFO: 2025-12-13T12:57:28 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
50
- INFO: 2025-12-13T12:57:28 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user 43b778b0-2062-4724-abbb-916a4835a9b0 - building fresh data
51
- INFO: 2025-12-13T12:57:28 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
52
- INFO: 10.16.37.13:31959 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
53
- INFO: 10.16.37.13:31959 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
54
- INFO: 10.16.13.79:34657 - "GET /health HTTP/1.1" 200 OK
55
- INFO: 2025-12-13T12:57:55 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
56
- INFO: 2025-12-13T12:57:55 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
57
- INFO: 10.16.37.13:16488 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
58
- INFO: 2025-12-13T12:57:56 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
59
- INFO: 2025-12-13T12:57:56 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
60
- INFO: 10.16.37.13:16488 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
61
- INFO: 2025-12-13T12:57:56 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
62
- INFO: 2025-12-13T12:57:56 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
63
- INFO: 10.16.13.79:34657 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
64
- INFO: 10.16.37.13:16488 - "GET /api/v1/tickets/11367b6d-6d4e-435f-9c8e-f03ae90d429e/detail HTTP/1.1" 200 OK
65
- INFO: 10.16.13.79:34657 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
66
- INFO: 10.16.37.13:23615 - "GET /health HTTP/1.1" 200 OK
67
- INFO: 10.16.13.79:24227 - "GET /health HTTP/1.1" 200 OK
68
- INFO: 10.16.37.13:12926 - "GET /health HTTP/1.1" 200 OK
69
- INFO: 10.16.13.79:9571 - "GET /health HTTP/1.1" 200 OK
70
- INFO: 10.16.13.79:23058 - "GET /health HTTP/1.1" 200 OK
71
- INFO: 2025-12-13T13:02:26 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
72
- INFO: 2025-12-13T13:02:26 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
73
- INFO: 2025-12-13T13:02:26 - app.services.dashboard_service: Dashboard cache HIT for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user 43b778b0-2062-4724-abbb-916a4835a9b0
74
- INFO: 10.16.37.13:38998 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
75
- INFO: 10.16.37.13:48026 - "GET /api/v1/tickets/2de41ce7-dff1-4151-9710-87958d18b5c4/detail HTTP/1.1" 200 OK
76
- INFO: 10.16.13.79:31516 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/4cd27765-5720-4cc0-872e-bf0da3cd1898 HTTP/1.1" 200 OK
77
- INFO: 10.16.37.13:49675 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
78
- INFO: 10.16.13.79:43107 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
79
- INFO: 10.16.13.79:8275 - "GET /health HTTP/1.1" 200 OK
80
- INFO: 10.16.13.79:13891 - "GET /health HTTP/1.1" 200 OK
81
- INFO: 10.16.13.79:25629 - "GET /health HTTP/1.1" 200 OK
82
- INFO: 10.16.37.13:43291 - "GET /health HTTP/1.1" 200 OK
83
- INFO: 10.16.13.79:32273 - "GET /health HTTP/1.1" 200 OK
84
- INFO: 10.16.37.13:62668 - "GET /health HTTP/1.1" 200 OK
85
- INFO: 2025-12-13T13:08:32 - app.core.supabase_auth: Session refreshed successfully
86
- INFO: 2025-12-13T13:08:32 - app.api.v1.auth: Token refreshed successfully for: viyisa8151@feralrex.com
87
- INFO: 10.16.37.13:59966 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
88
- INFO: 2025-12-13T13:10:22 - app.core.supabase_auth: Session refreshed successfully
89
- INFO: 2025-12-13T13:10:22 - app.api.v1.auth: Token refreshed successfully for: nadina73@nembors.com
90
- INFO: 10.16.37.13:12201 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
91
- INFO: 10.16.13.79:19406 - "GET /health HTTP/1.1" 200 OK
92
- INFO: 10.16.37.13:65090 - "GET /health HTTP/1.1" 200 OK
93
- INFO: 10.16.13.79:55398 - "GET /health HTTP/1.1" 200 OK
94
- INFO: 10.16.37.13:8205 - "GET /health HTTP/1.1" 200 OK
95
- INFO: 10.16.13.79:4569 - "GET /health HTTP/1.1" 200 OK
96
- INFO: 10.16.37.13:46876 - "GET /health HTTP/1.1" 200 OK
97
- INFO: 10.16.13.79:2648 - "GET /health HTTP/1.1" 200 OK
98
- INFO: 10.16.37.13:21839 - "GET /health HTTP/1.1" 200 OK
99
- INFO: 10.16.13.79:49883 - "GET /health HTTP/1.1" 200 OK
100
- INFO: 10.16.37.13:56870 - "GET /health HTTP/1.1" 200 OK
101
- INFO: 10.16.13.79:44817 - "GET /health HTTP/1.1" 200 OK
102
- INFO: 10.16.37.13:21731 - "GET /health HTTP/1.1" 200 OK
103
- INFO: 10.16.37.13:8029 - "GET /health HTTP/1.1" 200 OK
104
- INFO: 10.16.37.13:20594 - "GET / HTTP/1.1" 200 OK
105
- INFO: 10.16.13.79:7048 - "GET /health HTTP/1.1" 200 OK
106
- INFO: 10.16.13.79:52634 - "GET /health HTTP/1.1" 200 OK
107
- INFO: 10.16.37.13:30693 - "GET /health HTTP/1.1" 200 OK
108
- INFO: 10.16.13.79:6778 - "GET /health HTTP/1.1" 200 OK
109
- INFO: 10.16.37.13:15178 - "GET /health HTTP/1.1" 200 OK
110
- INFO: 10.16.37.13:15178 - "GET /health HTTP/1.1" 200 OK
111
- INFO: 10.16.37.13:48211 - "GET /health HTTP/1.1" 200 OK
112
- INFO: 10.16.13.79:62244 - "GET /health HTTP/1.1" 200 OK
113
- INFO: 10.16.37.13:11095 - "GET /health HTTP/1.1" 200 OK
114
- INFO: 10.16.13.79:35135 - "GET /health HTTP/1.1" 200 OK
115
- INFO: 2025-12-13T14:03:33 - app.core.supabase_auth: Session refreshed successfully
116
- INFO: 2025-12-13T14:03:33 - app.api.v1.auth: Token refreshed successfully for: viyisa8151@feralrex.com
117
- INFO: 10.16.37.13:40505 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
118
- INFO: 2025-12-13T14:05:23 - app.core.supabase_auth: Session refreshed successfully
119
- INFO: 2025-12-13T14:05:23 - app.api.v1.auth: Token refreshed successfully for: nadina73@nembors.com
120
- INFO: 10.16.13.79:30326 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
121
- INFO: 10.16.13.79:40787 - "GET /health HTTP/1.1" 200 OK
122
- INFO: 10.16.37.13:41666 - "GET /health HTTP/1.1" 200 OK
123
- INFO: 10.16.13.79:36662 - "GET /health HTTP/1.1" 200 OK
124
- INFO: 10.16.37.13:58513 - "GET /health HTTP/1.1" 200 OK
125
- INFO: 10.16.37.13:4072 - "GET /health HTTP/1.1" 200 OK
126
- INFO: 10.16.13.79:7100 - "GET /health HTTP/1.1" 200 OK
127
- INFO: 10.16.37.13:14145 - "GET /health HTTP/1.1" 200 OK
128
- INFO: 10.16.13.79:9218 - "GET /health HTTP/1.1" 200 OK
129
- INFO: 10.16.37.13:26994 - "GET /health HTTP/1.1" 200 OK
130
- INFO: 10.16.13.79:45806 - "GET /health HTTP/1.1" 200 OK
131
- INFO: 10.16.13.79:41985 - "GET /health HTTP/1.1" 200 OK
132
- INFO: 10.16.37.13:34750 - "GET /health HTTP/1.1" 200 OK
133
- INFO: 10.16.13.79:37177 - "GET /health HTTP/1.1" 200 OK
134
- INFO: 10.16.13.79:49565 - "GET /health HTTP/1.1" 200 OK
135
- INFO: 10.16.37.13:45390 - "GET /health HTTP/1.1" 200 OK
136
- INFO: 10.16.13.79:51042 - "GET /health HTTP/1.1" 200 OK
137
- INFO: 10.16.37.13:27460 - "GET /health HTTP/1.1" 200 OK
138
- INFO: 10.16.13.79:13115 - "GET /health HTTP/1.1" 200 OK
139
- INFO: 10.16.37.13:23299 - "GET /health HTTP/1.1" 200 OK
140
- INFO: 10.16.37.13:10751 - "GET /health HTTP/1.1" 200 OK
141
- INFO: 10.16.37.13:16426 - "GET /health HTTP/1.1" 200 OK
142
- INFO: 10.16.37.13:8028 - "GET /health HTTP/1.1" 200 OK
143
- INFO: 2025-12-13T14:58:35 - app.core.supabase_auth: Session refreshed successfully
144
- INFO: 2025-12-13T14:58:35 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
145
- INFO: 10.16.37.13:52842 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
146
- INFO: 2025-12-13T15:00:25 - app.core.supabase_auth: Session refreshed successfully
147
- INFO: 2025-12-13T15:00:25 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
148
- INFO: 10.16.37.13:55158 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
149
- INFO: 10.16.37.13:27321 - "GET /health HTTP/1.1" 200 OK
150
- INFO: 10.16.37.13:1867 - "GET /health HTTP/1.1" 200 OK
151
- INFO: 10.16.13.79:47834 - "GET /health HTTP/1.1" 200 OK
152
- INFO: 10.16.13.79:22727 - "GET /health HTTP/1.1" 200 OK
153
- INFO: 10.16.13.79:27213 - "GET /health HTTP/1.1" 200 OK
154
- INFO: 10.16.37.13:29666 - "GET /health HTTP/1.1" 200 OK
155
- INFO: 10.16.13.79:20455 - "GET /health HTTP/1.1" 200 OK
156
- INFO: 10.16.37.13:27046 - "GET /health HTTP/1.1" 200 OK
157
- INFO: 10.16.37.13:11604 - "GET /health HTTP/1.1" 200 OK
158
- INFO: 10.16.37.13:47785 - "GET /health HTTP/1.1" 200 OK
159
- INFO: 10.16.37.13:18832 - "GET /health HTTP/1.1" 200 OK
160
- INFO: 10.16.37.13:25430 - "GET /health HTTP/1.1" 200 OK
161
- INFO: 10.16.25.209:32335 - "GET /health HTTP/1.1" 200 OK
162
- INFO: 10.16.25.209:62197 - "GET /health HTTP/1.1" 200 OK
163
- INFO: 10.16.37.13:30824 - "GET /health HTTP/1.1" 200 OK
164
- INFO: 10.16.25.209:34056 - "GET /health HTTP/1.1" 200 OK
165
- INFO: 10.16.43.133:50034 - "GET /health HTTP/1.1" 200 OK
166
- INFO: 10.16.34.155:10830 - "GET /health HTTP/1.1" 200 OK
167
- INFO: 10.16.13.79:13914 - "GET /health HTTP/1.1" 200 OK
168
- INFO: 10.16.13.79:13914 - "GET /health HTTP/1.1" 200 OK
169
- INFO: 10.16.13.79:2493 - "GET /health HTTP/1.1" 200 OK
170
- INFO: 10.16.37.13:54532 - "GET /health HTTP/1.1" 200 OK
171
- INFO: 2025-12-13T15:53:39 - app.core.supabase_auth: Session refreshed successfully
172
- INFO: 2025-12-13T15:53:39 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
173
- INFO: 10.16.13.79:17752 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
174
- INFO: 2025-12-13T15:55:28 - app.core.supabase_auth: Session refreshed successfully
175
- INFO: 2025-12-13T15:55:28 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
176
- INFO: 10.16.37.13:60661 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
177
- INFO: 10.16.37.13:11024 - "GET /health HTTP/1.1" 200 OK
178
- INFO: 10.16.37.13:11024 - "GET /health HTTP/1.1" 200 OK
179
- INFO: 10.16.37.13:30475 - "GET /health HTTP/1.1" 200 OK
180
- INFO: 10.16.13.79:4141 - "GET /health HTTP/1.1" 200 OK
181
- INFO: 10.16.43.133:58702 - "GET /health HTTP/1.1" 200 OK
182
- INFO: 10.16.37.13:52256 - "GET /health HTTP/1.1" 200 OK
183
- INFO: 10.16.25.209:25427 - "GET /health HTTP/1.1" 200 OK
184
- INFO: 10.16.12.109:56027 - "GET /health HTTP/1.1" 200 OK
185
- INFO: 10.16.34.155:24827 - "GET /health HTTP/1.1" 200 OK
186
- INFO: 10.16.13.79:48542 - "GET /health HTTP/1.1" 200 OK
187
- INFO: 10.16.25.209:13105 - "GET /health HTTP/1.1" 200 OK
188
- INFO: 10.16.43.133:64961 - "GET /health HTTP/1.1" 200 OK
189
- INFO: 10.16.26.144:65459 - "GET /health HTTP/1.1" 200 OK
190
- INFO: 10.16.25.209:23419 - "GET /health HTTP/1.1" 200 OK
191
- INFO: 10.16.25.209:2882 - "GET /health HTTP/1.1" 200 OK
192
- INFO: 10.16.34.155:41788 - "GET /health HTTP/1.1" 200 OK
193
- INFO: 10.16.26.144:35006 - "GET /health HTTP/1.1" 200 OK
194
- INFO: 10.16.13.79:28932 - "GET /health HTTP/1.1" 200 OK
195
- INFO: 10.16.37.13:13169 - "GET /health HTTP/1.1" 200 OK
196
- INFO: 10.16.12.109:4373 - "GET /health HTTP/1.1" 200 OK
197
- INFO: 10.16.43.133:26893 - "GET /health HTTP/1.1" 200 OK
198
- INFO: 10.16.12.109:35287 - "GET /health HTTP/1.1" 200 OK
199
- INFO: 2025-12-13T16:48:42 - app.core.supabase_auth: Session refreshed successfully
200
- INFO: 2025-12-13T16:48:42 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
201
- INFO: 10.16.34.155:15127 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
202
- INFO: 2025-12-13T16:50:31 - app.core.supabase_auth: Session refreshed successfully
203
- INFO: 2025-12-13T16:50:31 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
204
- INFO: 10.16.12.109:64741 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
205
- INFO: 10.16.12.109:24653 - "GET /health HTTP/1.1" 200 OK
206
- INFO: 10.16.34.155:61079 - "GET /health HTTP/1.1" 200 OK
207
- INFO: 10.16.37.13:15131 - "GET /health HTTP/1.1" 200 OK
208
- INFO: 10.16.12.109:17959 - "GET /health HTTP/1.1" 200 OK
209
- INFO: 10.16.43.133:39086 - "GET /health HTTP/1.1" 200 OK
210
- INFO: 10.16.43.133:39086 - "GET /health HTTP/1.1" 200 OK
211
- INFO: 10.16.13.79:42431 - "GET /health HTTP/1.1" 200 OK
212
- INFO: 10.16.43.133:25824 - "GET /health HTTP/1.1" 200 OK
213
- INFO: 10.16.43.133:62954 - "GET /health HTTP/1.1" 200 OK
214
- INFO: 10.16.13.79:3510 - "GET /health HTTP/1.1" 200 OK
215
- INFO: 10.16.25.209:23492 - "GET /health HTTP/1.1" 200 OK
216
- INFO: 10.16.13.79:45718 - "GET /health HTTP/1.1" 200 OK
217
- INFO: 10.16.25.209:2620 - "GET /health HTTP/1.1" 200 OK
218
- INFO: 10.16.25.209:2620 - "GET /health HTTP/1.1" 200 OK
219
- INFO: 10.16.13.79:28774 - "GET /health HTTP/1.1" 200 OK
220
- INFO: 10.16.13.79:28774 - "GET /health HTTP/1.1" 200 OK
221
- INFO: 10.16.13.79:14907 - "GET /health HTTP/1.1" 200 OK
222
- INFO: 10.16.13.79:13703 - "GET /health HTTP/1.1" 200 OK
223
- INFO: 10.16.13.79:36362 - "GET /health HTTP/1.1" 200 OK
224
- INFO: 10.16.13.79:36362 - "GET /health HTTP/1.1" 200 OK
225
- INFO: 10.16.13.79:24702 - "GET /health HTTP/1.1" 200 OK
226
- INFO: 10.16.25.209:24975 - "GET /health HTTP/1.1" 200 OK
227
- INFO: 2025-12-13T17:43:47 - app.core.supabase_auth: Session refreshed successfully
228
- INFO: 2025-12-13T17:43:47 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
229
- INFO: 10.16.13.79:39668 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
230
- INFO: 2025-12-13T17:47:10 - app.core.supabase_auth: Session refreshed successfully
231
- INFO: 2025-12-13T17:47:10 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
232
- INFO: 10.16.13.79:27078 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
233
- INFO: 10.16.13.79:63773 - "GET /health HTTP/1.1" 200 OK
234
- INFO: 10.16.13.79:63773 - "GET /health HTTP/1.1" 200 OK
235
- INFO: 10.16.25.209:12326 - "GET /health HTTP/1.1" 200 OK
236
- INFO: 10.16.13.79:44150 - "GET /health HTTP/1.1" 200 OK
237
- INFO: 10.16.25.209:54428 - "GET /health HTTP/1.1" 200 OK
238
- INFO: 10.16.13.79:28075 - "GET /health HTTP/1.1" 200 OK
239
- INFO: 10.16.13.79:30097 - "GET /health HTTP/1.1" 200 OK
240
- INFO: 10.16.25.209:53598 - "GET /health HTTP/1.1" 200 OK
241
- INFO: 10.16.25.209:21028 - "GET /health HTTP/1.1" 200 OK
242
- INFO: 10.16.13.79:36516 - "GET /health HTTP/1.1" 200 OK
243
- INFO: 10.16.13.79:18077 - "GET /health HTTP/1.1" 200 OK
244
- INFO: 10.16.25.209:1527 - "GET /health HTTP/1.1" 200 OK
245
- INFO: 10.16.13.79:13070 - "GET /health HTTP/1.1" 200 OK
246
- INFO: 10.16.25.209:1561 - "GET /health HTTP/1.1" 200 OK
247
- INFO: 10.16.25.209:2324 - "GET /health HTTP/1.1" 200 OK
248
- INFO: 10.16.13.79:21267 - "GET /health HTTP/1.1" 200 OK
249
- INFO: 10.16.13.79:42246 - "GET /health HTTP/1.1" 200 OK
250
- INFO: 10.16.25.209:63529 - "GET /health HTTP/1.1" 200 OK
251
- INFO: 10.16.25.209:23584 - "GET /health HTTP/1.1" 200 OK
252
- INFO: 10.16.25.209:23584 - "GET /health HTTP/1.1" 200 OK
253
- INFO: 10.16.25.209:35525 - "GET /health HTTP/1.1" 200 OK
254
- INFO: 10.16.25.209:35525 - "GET /health HTTP/1.1" 200 OK
255
- INFO: 2025-12-13T18:38:49 - app.core.supabase_auth: Session refreshed successfully
256
- INFO: 2025-12-13T18:38:49 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
257
- INFO: 10.16.25.209:52027 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
258
- INFO: 2025-12-13T18:42:16 - app.core.supabase_auth: Session refreshed successfully
259
- INFO: 2025-12-13T18:42:16 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
260
- INFO: 10.16.25.209:59451 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
261
- INFO: 10.16.25.209:41454 - "GET /health HTTP/1.1" 200 OK
262
- INFO: 10.16.13.79:20769 - "GET /health HTTP/1.1" 200 OK
263
- INFO: 10.16.13.79:31662 - "GET /health HTTP/1.1" 200 OK
264
- INFO: 10.16.13.79:31662 - "GET /health HTTP/1.1" 200 OK
265
- INFO: 10.16.25.209:46801 - "GET /health HTTP/1.1" 200 OK
266
- INFO: 10.16.13.79:34337 - "GET /health HTTP/1.1" 200 OK
267
- INFO: 10.16.13.79:48402 - "GET /health HTTP/1.1" 200 OK
268
- INFO: 10.16.13.79:48402 - "GET /health HTTP/1.1" 200 OK
269
- INFO: 10.16.25.209:24273 - "GET /health HTTP/1.1" 200 OK
270
- INFO: 10.16.13.79:58850 - "GET /health HTTP/1.1" 200 OK
271
- INFO: 10.16.25.209:27187 - "GET /health HTTP/1.1" 200 OK
272
- INFO: 10.16.13.79:55276 - "GET /health HTTP/1.1" 200 OK
273
- INFO: 10.16.25.209:63615 - "GET /health HTTP/1.1" 200 OK
274
- INFO: 10.16.13.79:57477 - "GET /health HTTP/1.1" 200 OK
275
- INFO: 10.16.13.79:37547 - "GET /health HTTP/1.1" 200 OK
276
- INFO: 10.16.25.209:34629 - "GET /health HTTP/1.1" 200 OK
277
- INFO: 10.16.13.79:61278 - "GET /health HTTP/1.1" 200 OK
278
- INFO: 10.16.25.209:46661 - "GET /health HTTP/1.1" 200 OK
279
- INFO: 10.16.13.79:58454 - "GET /health HTTP/1.1" 200 OK
280
- INFO: 10.16.13.79:31996 - "GET /health HTTP/1.1" 200 OK
281
- INFO: 10.16.13.79:22755 - "GET /health HTTP/1.1" 200 OK
282
- INFO: 10.16.25.209:9555 - "GET /health HTTP/1.1" 200 OK
283
- INFO: 2025-12-13T19:33:51 - app.core.supabase_auth: Session refreshed successfully
284
- INFO: 2025-12-13T19:33:51 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
285
- INFO: 10.16.25.209:28089 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
286
- INFO: 2025-12-13T19:37:16 - app.core.supabase_auth: Session refreshed successfully
287
- INFO: 2025-12-13T19:37:17 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
288
- INFO: 10.16.25.209:17105 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
289
- INFO: 10.16.25.209:11790 - "GET /health HTTP/1.1" 200 OK
290
- INFO: 10.16.25.209:11790 - "GET /health HTTP/1.1" 200 OK
291
- INFO: 10.16.13.79:57906 - "GET /health HTTP/1.1" 200 OK
292
- INFO: 10.16.13.79:57906 - "GET /health HTTP/1.1" 200 OK
293
- INFO: 10.16.25.209:57794 - "GET /health HTTP/1.1" 200 OK
294
- INFO: 10.16.25.209:57794 - "GET /health HTTP/1.1" 200 OK
295
- INFO: 10.16.13.79:51940 - "GET /health HTTP/1.1" 200 OK
296
- INFO: 10.16.25.209:31296 - "GET /health HTTP/1.1" 200 OK
297
- INFO: 10.16.13.79:33251 - "GET /health HTTP/1.1" 200 OK
298
- INFO: 10.16.13.79:38330 - "GET /health HTTP/1.1" 200 OK
299
- INFO: 10.16.25.209:26645 - "GET /health HTTP/1.1" 200 OK
300
- INFO: 10.16.13.79:41717 - "GET /health HTTP/1.1" 200 OK
301
- INFO: 10.16.13.79:58821 - "GET /health HTTP/1.1" 200 OK
302
- INFO: 10.16.13.79:12900 - "GET /health HTTP/1.1" 200 OK
303
- INFO: 10.16.13.79:10816 - "GET /health HTTP/1.1" 200 OK
304
- INFO: 10.16.13.79:10816 - "GET /health HTTP/1.1" 200 OK
305
- INFO: 10.16.13.79:1252 - "GET /health HTTP/1.1" 200 OK
306
- INFO: 10.16.25.209:22828 - "GET /health HTTP/1.1" 200 OK
307
- INFO: 10.16.13.79:2455 - "GET /health HTTP/1.1" 200 OK
308
- INFO: 10.16.25.209:3087 - "GET /health HTTP/1.1" 200 OK
309
- INFO: 10.16.25.209:58285 - "GET /health HTTP/1.1" 200 OK
310
- INFO: 10.16.13.79:19162 - "GET /health HTTP/1.1" 200 OK
311
- INFO: 2025-12-13T20:28:53 - app.core.supabase_auth: Session refreshed successfully
312
- INFO: 2025-12-13T20:28:53 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
313
- INFO: 10.16.13.79:37066 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
314
- INFO: 2025-12-13T20:32:18 - app.core.supabase_auth: Session refreshed successfully
315
- INFO: 2025-12-13T20:32:18 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
316
- INFO: 10.16.13.79:47974 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
317
- INFO: 10.16.25.209:48751 - "GET /health HTTP/1.1" 200 OK
318
- INFO: 10.16.25.209:48751 - "GET /health HTTP/1.1" 200 OK
319
- INFO: 10.16.13.79:60731 - "GET /health HTTP/1.1" 200 OK
320
- INFO: 10.16.13.79:60731 - "GET /health HTTP/1.1" 200 OK
321
- INFO: 10.16.25.209:45857 - "GET /health HTTP/1.1" 200 OK
322
- INFO: 10.16.13.79:36867 - "GET /health HTTP/1.1" 200 OK
323
- INFO: 10.16.25.209:57039 - "GET /health HTTP/1.1" 200 OK
324
- INFO: 10.16.13.79:50358 - "GET /health HTTP/1.1" 200 OK
325
- INFO: 10.16.13.79:1444 - "GET /health HTTP/1.1" 200 OK
326
- INFO: 10.16.13.79:40873 - "GET /health HTTP/1.1" 200 OK
327
- INFO: 10.16.25.209:11575 - "GET /health HTTP/1.1" 200 OK
328
- INFO: 10.16.13.79:12310 - "GET /health HTTP/1.1" 200 OK
329
- INFO: 10.16.25.209:34941 - "GET /health HTTP/1.1" 200 OK
330
- INFO: 10.16.25.209:17143 - "GET /health HTTP/1.1" 200 OK
331
- INFO: 10.16.25.209:55437 - "GET /health HTTP/1.1" 200 OK
332
- INFO: 10.16.13.79:32607 - "GET /health HTTP/1.1" 200 OK
333
- INFO: 10.16.25.209:20210 - "GET /health HTTP/1.1" 200 OK
334
- INFO: 10.16.13.79:31708 - "GET /health HTTP/1.1" 200 OK
335
- INFO: 10.16.13.79:46814 - "GET /health HTTP/1.1" 200 OK
336
- INFO: 10.16.13.79:46814 - "GET /health HTTP/1.1" 200 OK
337
- INFO: 10.16.13.79:53420 - "GET /health HTTP/1.1" 200 OK
338
- INFO: 10.16.13.79:54527 - "GET /health HTTP/1.1" 200 OK
339
- INFO: 2025-12-13T21:23:55 - app.core.supabase_auth: Session refreshed successfully
340
- INFO: 2025-12-13T21:23:56 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
341
- INFO: 10.16.13.79:21627 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
342
- INFO: 2025-12-13T21:27:19 - app.core.supabase_auth: Session refreshed successfully
343
- INFO: 2025-12-13T21:27:19 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
344
- INFO: 10.16.13.79:54836 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
345
- INFO: 10.16.13.79:62235 - "GET /health HTTP/1.1" 200 OK
346
- INFO: 10.16.13.79:62235 - "GET /health HTTP/1.1" 200 OK
347
- INFO: 10.16.25.209:18012 - "GET /health HTTP/1.1" 200 OK
348
- INFO: 10.16.25.209:18012 - "GET /health HTTP/1.1" 200 OK
349
- INFO: 10.16.13.79:62153 - "GET /health HTTP/1.1" 200 OK
350
- INFO: 10.16.25.209:8992 - "GET /health HTTP/1.1" 200 OK
351
- INFO: 10.16.25.209:51249 - "GET /health HTTP/1.1" 200 OK
352
- INFO: 10.16.13.79:26005 - "GET /health HTTP/1.1" 200 OK
353
- INFO: 10.16.25.209:40668 - "GET /health HTTP/1.1" 200 OK
354
- INFO: 10.16.25.209:40668 - "GET /health HTTP/1.1" 200 OK
355
- INFO: 10.16.25.209:53751 - "GET /health HTTP/1.1" 200 OK
356
- INFO: 10.16.13.79:59803 - "GET /health HTTP/1.1" 200 OK
357
- INFO: 10.16.13.79:11206 - "GET /health HTTP/1.1" 200 OK
358
- INFO: 10.16.13.79:31073 - "GET /health HTTP/1.1" 200 OK
359
- INFO: 10.16.13.79:29431 - "GET /health HTTP/1.1" 200 OK
360
- INFO: 10.16.25.209:28394 - "GET /health HTTP/1.1" 200 OK
361
- INFO: 10.16.25.209:52548 - "GET /health HTTP/1.1" 200 OK
362
- INFO: 10.16.25.209:52548 - "GET /health HTTP/1.1" 200 OK
363
- INFO: 10.16.13.79:7117 - "GET /health HTTP/1.1" 200 OK
364
- INFO: 10.16.13.79:50455 - "GET /health HTTP/1.1" 200 OK
365
- INFO: 10.16.25.209:27097 - "GET /health HTTP/1.1" 200 OK
366
- INFO: 10.16.37.13:2044 - "GET /health HTTP/1.1" 200 OK
367
- INFO: 2025-12-13T22:18:57 - app.core.supabase_auth: Session refreshed successfully
368
- INFO: 2025-12-13T22:18:57 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
369
- INFO: 10.16.25.209:50268 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
370
- INFO: 2025-12-13T22:22:21 - app.core.supabase_auth: Session refreshed successfully
371
- INFO: 2025-12-13T22:22:21 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
372
- INFO: 10.16.37.13:51054 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
373
- INFO: 10.16.13.79:42182 - "GET /health HTTP/1.1" 200 OK
374
- INFO: 10.16.37.13:10081 - "GET /health HTTP/1.1" 200 OK
375
- INFO: 10.16.13.79:14204 - "GET /health HTTP/1.1" 200 OK
376
- INFO: 10.16.25.209:28578 - "GET /health HTTP/1.1" 200 OK
377
- INFO: 10.16.25.209:42365 - "GET /health HTTP/1.1" 200 OK
378
- INFO: 10.16.13.79:13104 - "GET /health HTTP/1.1" 200 OK
379
- INFO: 10.16.13.79:14481 - "GET /health HTTP/1.1" 200 OK
380
- INFO: 10.16.25.209:12483 - "GET /health HTTP/1.1" 200 OK
381
- INFO: 10.16.25.209:6282 - "GET /health HTTP/1.1" 200 OK
382
- INFO: 10.16.13.79:60750 - "GET /health HTTP/1.1" 200 OK
383
- INFO: 10.16.25.209:9771 - "GET /health HTTP/1.1" 200 OK
384
- INFO: 10.16.13.79:14860 - "GET /health HTTP/1.1" 200 OK
385
- INFO: 10.16.25.209:62429 - "GET /health HTTP/1.1" 200 OK
386
- INFO: 10.16.13.79:43744 - "GET /health HTTP/1.1" 200 OK
387
- INFO: 10.16.25.209:65268 - "GET /health HTTP/1.1" 200 OK
388
- INFO: 10.16.25.209:65268 - "GET /health HTTP/1.1" 200 OK
389
- INFO: 10.16.13.79:56105 - "GET /health HTTP/1.1" 200 OK
390
- INFO: 10.16.25.209:10662 - "GET /health HTTP/1.1" 200 OK
391
- INFO: 10.16.25.209:13126 - "GET /health HTTP/1.1" 200 OK
392
- INFO: 10.16.13.79:58672 - "GET /health HTTP/1.1" 200 OK
393
- INFO: 10.16.13.79:45498 - "GET /health HTTP/1.1" 200 OK
394
- INFO: 10.16.25.209:3140 - "GET /health HTTP/1.1" 200 OK
395
- INFO: 2025-12-13T23:13:58 - app.core.supabase_auth: Session refreshed successfully
396
- INFO: 2025-12-13T23:13:58 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
397
- INFO: 10.16.13.79:45475 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
398
- INFO: 2025-12-13T23:17:23 - app.core.supabase_auth: Session refreshed successfully
399
- INFO: 2025-12-13T23:17:23 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
400
- INFO: 10.16.25.209:55459 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
401
- INFO: 10.16.25.209:13060 - "GET /health HTTP/1.1" 200 OK
402
- INFO: 10.16.13.79:24525 - "GET /health HTTP/1.1" 200 OK
403
- INFO: 10.16.25.209:39586 - "GET /health HTTP/1.1" 200 OK
404
- INFO: 10.16.25.209:26668 - "GET /health HTTP/1.1" 200 OK
405
- INFO: 10.16.25.209:27988 - "GET /health HTTP/1.1" 200 OK
406
- INFO: 10.16.13.79:53037 - "GET /health HTTP/1.1" 200 OK
407
- INFO: 10.16.13.79:4413 - "GET /health HTTP/1.1" 200 OK
408
- INFO: 10.16.13.79:50561 - "GET /health HTTP/1.1" 200 OK
409
- INFO: 10.16.25.209:13451 - "GET /health HTTP/1.1" 200 OK
410
- INFO: 10.16.13.79:39935 - "GET /health HTTP/1.1" 200 OK
411
- INFO: 10.16.25.209:43309 - "GET /health HTTP/1.1" 200 OK
412
- INFO: 10.16.13.79:33392 - "GET /health HTTP/1.1" 200 OK
413
- INFO: 10.16.25.209:11310 - "GET /health HTTP/1.1" 200 OK
414
- INFO: 10.16.25.209:11310 - "GET /health HTTP/1.1" 200 OK
415
- INFO: 10.16.25.209:57872 - "GET /health HTTP/1.1" 200 OK
416
- INFO: 10.16.13.79:40296 - "GET /health HTTP/1.1" 200 OK
417
- INFO: 10.16.25.209:36895 - "GET /health HTTP/1.1" 200 OK
418
- INFO: 10.16.25.209:36895 - "GET /health HTTP/1.1" 200 OK
419
- INFO: 10.16.25.209:48855 - "GET /health HTTP/1.1" 200 OK
420
- INFO: 10.16.25.209:57752 - "GET /health HTTP/1.1" 200 OK
421
- INFO: 10.16.13.79:37012 - "GET /health HTTP/1.1" 200 OK
422
- INFO: 10.16.25.209:56139 - "GET /health HTTP/1.1" 200 OK
423
- INFO: 2025-12-14T00:09:00 - app.core.supabase_auth: Session refreshed successfully
424
- INFO: 2025-12-14T00:09:00 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
425
- INFO: 10.16.25.209:8767 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
426
- INFO: 2025-12-14T00:12:24 - app.core.supabase_auth: Session refreshed successfully
427
- INFO: 2025-12-14T00:12:24 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
428
- INFO: 10.16.13.79:64783 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
429
- INFO: 10.16.25.209:53119 - "GET /health HTTP/1.1" 200 OK
430
- INFO: 10.16.25.209:41358 - "GET /health HTTP/1.1" 200 OK
431
- INFO: 10.16.13.79:51441 - "GET /health HTTP/1.1" 200 OK
432
- INFO: 10.16.25.209:14578 - "GET /health HTTP/1.1" 200 OK
433
- INFO: 10.16.13.79:56190 - "GET /health HTTP/1.1" 200 OK
434
- INFO: 10.16.13.79:56190 - "GET /health HTTP/1.1" 200 OK
435
- INFO: 10.16.25.209:42145 - "GET /health HTTP/1.1" 200 OK
436
- INFO: 10.16.13.79:61338 - "GET /health HTTP/1.1" 200 OK
437
- INFO: 10.16.13.79:4255 - "GET /health HTTP/1.1" 200 OK
438
- INFO: 10.16.25.209:64454 - "GET /health HTTP/1.1" 200 OK
439
- INFO: 10.16.25.209:41300 - "GET /health HTTP/1.1" 200 OK
440
- INFO: 10.16.13.79:14703 - "GET /health HTTP/1.1" 200 OK
441
- INFO: 10.16.25.209:37510 - "GET /health HTTP/1.1" 200 OK
442
- INFO: 10.16.25.209:35956 - "GET /health HTTP/1.1" 200 OK
443
- INFO: 10.16.25.209:20108 - "GET /health HTTP/1.1" 200 OK
444
- INFO: 10.16.25.209:20108 - "GET /health HTTP/1.1" 200 OK
445
- INFO: 10.16.13.79:6573 - "GET /health HTTP/1.1" 200 OK
446
- INFO: 10.16.25.209:14014 - "GET /health HTTP/1.1" 200 OK
447
- INFO: 10.16.13.79:12863 - "GET /health HTTP/1.1" 200 OK
448
- INFO: 10.16.25.209:8007 - "GET /health HTTP/1.1" 200 OK
449
- INFO: 10.16.13.79:25351 - "GET /health HTTP/1.1" 200 OK
450
- INFO: 10.16.13.79:25351 - "GET /health HTTP/1.1" 200 OK
451
- INFO: 2025-12-14T01:04:01 - app.core.supabase_auth: Session refreshed successfully
452
- INFO: 2025-12-14T01:04:01 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
453
- INFO: 10.16.13.79:21447 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
454
- INFO: 2025-12-14T01:07:26 - app.core.supabase_auth: Session refreshed successfully
455
- INFO: 2025-12-14T01:07:26 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
456
- INFO: 10.16.25.209:37114 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
457
- INFO: 10.16.25.209:39197 - "GET /health HTTP/1.1" 200 OK
458
- INFO: 10.16.25.209:39197 - "GET /health HTTP/1.1" 200 OK
459
- INFO: 10.16.13.79:34861 - "GET /health HTTP/1.1" 200 OK
460
- INFO: 10.16.13.79:54181 - "GET /health HTTP/1.1" 200 OK
461
- INFO: 10.16.25.209:36528 - "GET /health HTTP/1.1" 200 OK
462
- INFO: 10.16.13.79:48768 - "GET /health HTTP/1.1" 200 OK
463
- INFO: 10.16.13.79:13297 - "GET /health HTTP/1.1" 200 OK
464
- INFO: 10.16.13.79:19939 - "GET /health HTTP/1.1" 200 OK
465
- INFO: 10.16.13.79:9900 - "GET /health HTTP/1.1" 200 OK
466
- INFO: 10.16.13.79:9900 - "GET /health HTTP/1.1" 200 OK
467
- INFO: 10.16.25.209:25922 - "GET /health HTTP/1.1" 200 OK
468
- INFO: 10.16.13.79:61271 - "GET /health HTTP/1.1" 200 OK
469
- INFO: 10.16.25.209:20454 - "GET /health HTTP/1.1" 200 OK
470
- INFO: 10.16.13.79:15836 - "GET /health HTTP/1.1" 200 OK
471
- INFO: 10.16.25.209:48029 - "GET /health HTTP/1.1" 200 OK
472
- INFO: 10.16.25.209:42336 - "GET /health HTTP/1.1" 200 OK
473
- INFO: 10.16.13.79:33785 - "GET /health HTTP/1.1" 200 OK
474
- INFO: 10.16.13.79:33785 - "GET /health HTTP/1.1" 200 OK
475
- INFO: 10.16.13.79:15501 - "GET /health HTTP/1.1" 200 OK
476
- INFO: 10.16.13.79:25679 - "GET /health HTTP/1.1" 200 OK
477
- INFO: 10.16.13.79:35778 - "GET /health HTTP/1.1" 200 OK
478
- INFO: 10.16.25.209:4766 - "GET /health HTTP/1.1" 200 OK
479
- INFO: 2025-12-14T01:59:02 - app.core.supabase_auth: Session refreshed successfully
480
- INFO: 2025-12-14T01:59:02 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
481
- INFO: 10.16.25.209:34440 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
482
- INFO: 2025-12-14T02:02:27 - app.core.supabase_auth: Session refreshed successfully
483
- INFO: 2025-12-14T02:02:28 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
484
- INFO: 10.16.25.209:3074 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
485
- INFO: 10.16.13.79:51707 - "GET /health HTTP/1.1" 200 OK
486
- INFO: 10.16.25.209:21756 - "GET /health HTTP/1.1" 200 OK
487
- INFO: 10.16.25.209:10158 - "GET /health HTTP/1.1" 200 OK
488
- INFO: 10.16.13.79:46560 - "GET /health HTTP/1.1" 200 OK
489
- INFO: 10.16.13.79:7381 - "GET /health HTTP/1.1" 200 OK
490
- INFO: 10.16.13.79:7381 - "GET /health HTTP/1.1" 200 OK
491
- INFO: 10.16.25.209:20025 - "GET /health HTTP/1.1" 200 OK
492
- INFO: 10.16.25.209:20025 - "GET /health HTTP/1.1" 200 OK
493
- INFO: 10.16.25.209:40958 - "GET /health HTTP/1.1" 200 OK
494
- INFO: 10.16.25.209:43957 - "GET /health HTTP/1.1" 200 OK
495
- INFO: 10.16.25.209:29619 - "GET /health HTTP/1.1" 200 OK
496
- INFO: 10.16.13.79:15299 - "GET /health HTTP/1.1" 200 OK
497
- INFO: 10.16.25.209:19168 - "GET /health HTTP/1.1" 200 OK
498
- INFO: 10.16.25.209:19168 - "GET /health HTTP/1.1" 200 OK
499
- INFO: 10.16.25.209:16442 - "GET /health HTTP/1.1" 200 OK
500
- INFO: 10.16.25.209:25750 - "GET /health HTTP/1.1" 200 OK
501
- INFO: 10.16.13.79:61881 - "GET /health HTTP/1.1" 200 OK
502
- INFO: 10.16.13.79:61881 - "GET /health HTTP/1.1" 200 OK
503
- INFO: 10.16.25.209:45879 - "GET /health HTTP/1.1" 200 OK
504
- INFO: 10.16.13.79:1424 - "GET /health HTTP/1.1" 200 OK
505
- INFO: 10.16.25.209:40999 - "GET /health HTTP/1.1" 200 OK
506
- INFO: 10.16.13.79:29570 - "GET /health HTTP/1.1" 200 OK
507
- INFO: 2025-12-14T02:54:04 - app.core.supabase_auth: Session refreshed successfully
508
- INFO: 2025-12-14T02:54:04 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
509
- INFO: 10.16.13.79:61876 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
510
- INFO: 2025-12-14T02:57:29 - app.core.supabase_auth: Session refreshed successfully
511
- INFO: 2025-12-14T02:57:29 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
512
- INFO: 10.16.13.79:61752 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
513
- INFO: 10.16.25.209:55982 - "GET /health HTTP/1.1" 200 OK
514
- INFO: 10.16.13.79:29919 - "GET /health HTTP/1.1" 200 OK
515
- INFO: 10.16.25.209:45873 - "GET /health HTTP/1.1" 200 OK
516
- INFO: 10.16.25.209:27177 - "GET /health HTTP/1.1" 200 OK
517
- INFO: 10.16.25.209:25008 - "GET /health HTTP/1.1" 200 OK
518
- INFO: 10.16.25.209:32462 - "GET /health HTTP/1.1" 200 OK
519
- INFO: 10.16.25.209:51931 - "GET /health HTTP/1.1" 200 OK
520
- INFO: 10.16.25.209:51931 - "GET /health HTTP/1.1" 200 OK
521
- INFO: 10.16.13.79:18545 - "GET /health HTTP/1.1" 200 OK
522
- INFO: 10.16.25.209:17056 - "GET /health HTTP/1.1" 200 OK
523
- INFO: 10.16.25.209:12928 - "GET /health HTTP/1.1" 200 OK
524
- INFO: 10.16.25.209:12928 - "GET /health HTTP/1.1" 200 OK
525
- INFO: 10.16.13.79:43609 - "GET /health HTTP/1.1" 200 OK
526
- INFO: 10.16.13.79:43609 - "GET /health HTTP/1.1" 200 OK
527
- INFO: 10.16.25.209:48244 - "GET /health HTTP/1.1" 200 OK
528
- INFO: 10.16.13.79:55027 - "GET /health HTTP/1.1" 200 OK
529
- INFO: 10.16.25.209:1125 - "GET /health HTTP/1.1" 200 OK
530
- INFO: 10.16.25.209:13336 - "GET /health HTTP/1.1" 200 OK
531
- INFO: 10.16.13.79:37058 - "GET /health HTTP/1.1" 200 OK
532
- INFO: 10.16.25.209:57254 - "GET /health HTTP/1.1" 200 OK
533
- INFO: 10.16.13.79:48183 - "GET /health HTTP/1.1" 200 OK
534
- INFO: 10.16.25.209:48521 - "GET /health HTTP/1.1" 200 OK
535
- INFO: 2025-12-14T03:49:06 - app.core.supabase_auth: Session refreshed successfully
536
- INFO: 2025-12-14T03:49:06 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
537
- INFO: 10.16.13.79:58343 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
538
- INFO: 2025-12-14T03:52:31 - app.core.supabase_auth: Session refreshed successfully
539
- INFO: 2025-12-14T03:52:31 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
540
- INFO: 10.16.13.79:60953 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
541
- INFO: 10.16.25.209:51385 - "GET /health HTTP/1.1" 200 OK
542
- INFO: 10.16.13.79:36634 - "GET /health HTTP/1.1" 200 OK
543
- INFO: 10.16.25.209:6726 - "GET /health HTTP/1.1" 200 OK
544
- INFO: 10.16.13.79:40220 - "GET /health HTTP/1.1" 200 OK
545
- INFO: 10.16.13.79:10199 - "GET /health HTTP/1.1" 200 OK
546
- INFO: 10.16.25.209:62842 - "GET /health HTTP/1.1" 200 OK
547
- INFO: 10.16.13.79:57972 - "GET /health HTTP/1.1" 200 OK
548
- INFO: 10.16.25.209:34450 - "GET /health HTTP/1.1" 200 OK
549
- INFO: 10.16.25.209:17777 - "GET /health HTTP/1.1" 200 OK
550
- INFO: 10.16.13.79:1689 - "GET /health HTTP/1.1" 200 OK
551
- INFO: 10.16.13.79:1096 - "GET /health HTTP/1.1" 200 OK
552
- INFO: 10.16.13.79:1096 - "GET /health HTTP/1.1" 200 OK
553
- INFO: 10.16.25.209:5751 - "GET /health HTTP/1.1" 200 OK
554
- INFO: 10.16.13.79:13561 - "GET /health HTTP/1.1" 200 OK
555
- INFO: 10.16.13.79:52545 - "GET /health HTTP/1.1" 200 OK
556
- INFO: 10.16.25.209:11426 - "GET /health HTTP/1.1" 200 OK
557
- INFO: 10.16.25.209:21992 - "GET /health HTTP/1.1" 200 OK
558
- INFO: 10.16.13.79:11839 - "GET /health HTTP/1.1" 200 OK
559
- INFO: 10.16.25.209:60538 - "GET /health HTTP/1.1" 200 OK
560
- INFO: 10.16.13.79:37431 - "GET /health HTTP/1.1" 200 OK
561
- INFO: 10.16.13.79:50820 - "GET /health HTTP/1.1" 200 OK
562
- INFO: 10.16.25.209:39354 - "GET /health HTTP/1.1" 200 OK
563
- INFO: 2025-12-14T04:44:08 - app.core.supabase_auth: Session refreshed successfully
564
- INFO: 2025-12-14T04:44:08 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
565
- INFO: 10.16.25.209:31743 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
566
- INFO: 2025-12-14T04:47:34 - app.core.supabase_auth: Session refreshed successfully
567
- INFO: 2025-12-14T04:47:34 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
568
- INFO: 10.16.13.79:23694 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
569
- INFO: 10.16.25.209:14187 - "GET /health HTTP/1.1" 200 OK
570
- INFO: 10.16.25.209:43637 - "GET /health HTTP/1.1" 200 OK
571
- INFO: 10.16.25.209:13006 - "GET /health HTTP/1.1" 200 OK
572
- INFO: 10.16.13.79:24411 - "GET /health HTTP/1.1" 200 OK
573
- INFO: 10.16.13.79:55507 - "GET /health HTTP/1.1" 200 OK
574
- INFO: 10.16.13.79:59459 - "GET /health HTTP/1.1" 200 OK
575
- INFO: 10.16.25.209:49103 - "GET /health HTTP/1.1" 200 OK
576
- INFO: 10.16.25.209:46433 - "GET /health HTTP/1.1" 200 OK
577
- INFO: 10.16.13.79:58613 - "GET /health HTTP/1.1" 200 OK
578
- INFO: 10.16.13.79:33747 - "GET /health HTTP/1.1" 200 OK
579
- INFO: 10.16.25.209:59431 - "GET /health HTTP/1.1" 200 OK
580
- INFO: 10.16.25.209:30512 - "GET /health HTTP/1.1" 200 OK
581
- INFO: 10.16.25.209:43199 - "GET /health HTTP/1.1" 200 OK
582
- INFO: 10.16.25.209:39442 - "GET /health HTTP/1.1" 200 OK
583
- INFO: 10.16.25.209:7992 - "GET /health HTTP/1.1" 200 OK
584
- INFO: 2025-12-14T05:39:09 - app.core.supabase_auth: Session refreshed successfully
585
- INFO: 2025-12-14T05:39:09 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
586
- INFO: 10.16.13.79:36468 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
587
- INFO: 10.16.25.209:48618 - "GET /health HTTP/1.1" 200 OK
588
- INFO: 10.16.13.79:52348 - "GET /health HTTP/1.1" 200 OK
589
- INFO: 10.16.25.209:19469 - "GET /health HTTP/1.1" 200 OK
590
- INFO: 10.16.13.79:46433 - "GET /health HTTP/1.1" 200 OK
591
- INFO: 10.16.13.79:45638 - "GET /health HTTP/1.1" 200 OK
592
- INFO: 10.16.13.79:61124 - "GET /health HTTP/1.1" 200 OK
593
- INFO: 10.16.13.79:37210 - "GET /health HTTP/1.1" 200 OK
594
- INFO: 10.16.13.79:21567 - "GET /health HTTP/1.1" 200 OK
595
- INFO: 10.16.13.79:14258 - "GET /health HTTP/1.1" 200 OK
596
- INFO: 10.16.25.209:55106 - "GET /health HTTP/1.1" 200 OK
597
- INFO: 10.16.13.79:56904 - "GET /health HTTP/1.1" 200 OK
598
- INFO: 2025-12-14T06:34:11 - app.core.supabase_auth: Session refreshed successfully
599
- INFO: 2025-12-14T06:34:11 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
600
- INFO: 10.16.25.209:8442 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
601
- INFO: 10.16.13.79:32775 - "GET /health HTTP/1.1" 200 OK
602
- INFO: 10.16.25.209:58889 - "GET /health HTTP/1.1" 200 OK
603
- INFO: 10.16.13.79:25588 - "GET /health HTTP/1.1" 200 OK
604
- INFO: 10.16.25.209:44353 - "GET /health HTTP/1.1" 200 OK
605
- INFO: 10.16.25.209:64164 - "GET /health HTTP/1.1" 200 OK
606
- INFO: 10.16.25.209:49184 - "GET /health HTTP/1.1" 200 OK
607
- INFO: 10.16.13.79:13720 - "GET /health HTTP/1.1" 200 OK
608
- INFO: 10.16.13.79:20885 - "GET /health HTTP/1.1" 200 OK
609
- INFO: 10.16.13.79:57477 - "GET /health HTTP/1.1" 200 OK
610
- INFO: 10.16.25.209:48914 - "GET /health HTTP/1.1" 200 OK
611
- INFO: 10.16.25.209:19223 - "GET /health HTTP/1.1" 200 OK
612
- INFO: 2025-12-14T07:29:14 - app.core.supabase_auth: Session refreshed successfully
613
- INFO: 2025-12-14T07:29:14 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
614
- INFO: 10.16.25.209:27197 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
615
- INFO: 10.16.25.209:41414 - "GET /health HTTP/1.1" 200 OK
616
- INFO: 10.16.13.79:33238 - "GET /health HTTP/1.1" 200 OK
617
- INFO: 10.16.25.209:54570 - "GET /health HTTP/1.1" 200 OK
618
- INFO: 10.16.25.209:50097 - "GET /health HTTP/1.1" 200 OK
619
- INFO: 10.16.13.79:44557 - "GET /health HTTP/1.1" 200 OK
620
- INFO: 10.16.25.209:4844 - "GET /health HTTP/1.1" 200 OK
621
- INFO: 10.16.13.79:34912 - "GET /health HTTP/1.1" 200 OK
622
- INFO: 10.16.13.79:13121 - "GET /health HTTP/1.1" 200 OK
623
- INFO: 10.16.13.79:33709 - "GET /health HTTP/1.1" 200 OK
624
- INFO: 10.16.13.79:48200 - "GET /health HTTP/1.1" 200 OK
625
- INFO: 10.16.25.209:58998 - "GET /health HTTP/1.1" 200 OK
626
- INFO: 2025-12-14T08:24:16 - app.core.supabase_auth: Session refreshed successfully
627
- INFO: 2025-12-14T08:24:16 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
628
- INFO: 10.16.13.79:23608 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
629
- INFO: 10.16.25.209:25466 - "GET /health HTTP/1.1" 200 OK
630
- INFO: 10.16.25.209:9588 - "GET /health HTTP/1.1" 200 OK
631
- INFO: 10.16.13.79:52108 - "GET /health HTTP/1.1" 200 OK
632
- INFO: 10.16.25.209:42493 - "GET /health HTTP/1.1" 200 OK
633
- INFO: 10.16.25.209:7849 - "GET /health HTTP/1.1" 200 OK
634
- INFO: 10.16.25.209:55139 - "GET /health HTTP/1.1" 200 OK
635
- INFO: 10.16.13.79:37045 - "GET /health HTTP/1.1" 200 OK
636
- INFO: 10.16.13.79:14773 - "GET /health HTTP/1.1" 200 OK
637
- INFO: 10.16.13.79:11918 - "GET /health HTTP/1.1" 200 OK
638
- INFO: 10.16.13.79:62109 - "GET /health HTTP/1.1" 200 OK
639
- INFO: 10.16.13.79:31254 - "GET /health HTTP/1.1" 200 OK
640
- INFO: 2025-12-14T09:19:23 - app.core.supabase_auth: Session refreshed successfully
641
- INFO: 2025-12-14T09:19:23 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
642
- INFO: 10.16.13.79:39774 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
643
- INFO: 10.16.25.209:49277 - "GET /health HTTP/1.1" 200 OK
644
- INFO: 10.16.25.209:26932 - "GET /health HTTP/1.1" 200 OK
645
- INFO: 10.16.25.209:48333 - "GET /health HTTP/1.1" 200 OK
646
- INFO: 10.16.13.79:25237 - "GET /health HTTP/1.1" 200 OK
647
- INFO: 10.16.25.209:12273 - "GET /health HTTP/1.1" 200 OK
648
- INFO: 10.16.25.209:52512 - "GET /health HTTP/1.1" 200 OK
649
- INFO: 10.16.25.209:44701 - "GET /health HTTP/1.1" 200 OK
650
- INFO: 10.16.25.209:7068 - "GET /health HTTP/1.1" 200 OK
651
- INFO: 10.16.13.79:61259 - "GET /health HTTP/1.1" 200 OK
652
- INFO: 10.16.13.79:32735 - "GET /health HTTP/1.1" 200 OK
653
- INFO: 10.16.13.79:24391 - "GET /health HTTP/1.1" 200 OK
654
- INFO: 2025-12-14T10:14:28 - app.core.supabase_auth: Session refreshed successfully
655
- INFO: 2025-12-14T10:14:28 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
656
- INFO: 10.16.13.79:64086 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
657
- INFO: 10.16.25.209:4472 - "GET /health HTTP/1.1" 200 OK
658
- INFO: 10.16.25.209:62331 - "GET /health HTTP/1.1" 200 OK
659
- INFO: 10.16.13.79:1695 - "GET /health HTTP/1.1" 200 OK
660
- INFO: 10.16.13.79:8995 - "GET /health HTTP/1.1" 200 OK
661
- INFO: 10.16.25.209:1628 - "GET /health HTTP/1.1" 200 OK
662
- INFO: 10.16.25.209:23967 - "GET /health HTTP/1.1" 200 OK
663
- INFO: 10.16.25.209:20012 - "GET /health HTTP/1.1" 200 OK
664
- INFO: 10.16.25.209:9016 - "GET /health HTTP/1.1" 200 OK
665
- INFO: 10.16.13.79:21646 - "GET /health HTTP/1.1" 200 OK
666
- INFO: 10.16.25.209:36774 - "GET /health HTTP/1.1" 200 OK
667
- INFO: 10.16.25.209:34805 - "GET /health HTTP/1.1" 200 OK
668
- INFO: 2025-12-14T11:09:29 - app.core.supabase_auth: Session refreshed successfully
669
- INFO: 2025-12-14T11:09:29 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
670
- INFO: 10.16.13.79:9187 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
671
- INFO: 10.16.25.209:18265 - "GET /health HTTP/1.1" 200 OK
672
- INFO: 10.16.25.209:13268 - "GET /health HTTP/1.1" 200 OK
673
- INFO: 10.16.25.209:58752 - "GET /health HTTP/1.1" 200 OK
674
- INFO: 10.16.25.209:5179 - "GET /health HTTP/1.1" 200 OK
675
- INFO: 10.16.13.79:48336 - "GET /health HTTP/1.1" 200 OK
676
- INFO: 10.16.13.79:2149 - "GET /health HTTP/1.1" 200 OK
677
- INFO: 10.16.25.209:45472 - "GET /health HTTP/1.1" 200 OK
678
- INFO: 10.16.13.79:41902 - "GET /health HTTP/1.1" 200 OK
679
- INFO: 10.16.13.79:17298 - "GET /health HTTP/1.1" 200 OK
680
- INFO: 10.16.13.79:7536 - "GET /health HTTP/1.1" 200 OK
681
- INFO: 10.16.13.79:56522 - "GET /health HTTP/1.1" 200 OK
682
- INFO: 2025-12-14T12:04:31 - app.core.supabase_auth: Session refreshed successfully
683
- INFO: 2025-12-14T12:04:31 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
684
- INFO: 10.16.13.79:58610 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
685
- INFO: 10.16.25.209:12066 - "GET /health HTTP/1.1" 200 OK
686
- INFO: 10.16.25.209:5352 - "GET /health HTTP/1.1" 200 OK
687
- INFO: 10.16.13.79:45545 - "GET /health HTTP/1.1" 200 OK
688
- INFO: 10.16.13.79:58212 - "GET /health HTTP/1.1" 200 OK
689
- INFO: 10.16.13.79:46681 - "GET /health HTTP/1.1" 200 OK
690
- INFO: 10.16.25.209:39315 - "GET /health HTTP/1.1" 200 OK
691
- INFO: 10.16.13.79:28418 - "GET /health HTTP/1.1" 200 OK
692
- INFO: 10.16.13.79:32613 - "GET /robots.txt HTTP/1.1" 404 Not Found
693
- INFO: 10.16.25.209:54198 - "GET /?logs=container HTTP/1.1" 200 OK
694
- INFO: 10.16.13.79:64121 - "GET /?logs=container HTTP/1.1" 200 OK
695
- INFO: 10.16.13.79:60665 - "GET /health HTTP/1.1" 200 OK
696
- ERROR: 2025-12-14T14:26:00 - app.core.supabase_auth: Session refresh error: Invalid Refresh Token: Already Used
697
- ERROR: 2025-12-14T14:26:00 - app.api.v1.auth: ❌ Token refresh error: Invalid Refresh Token: Already Used
698
- INFO: 10.16.13.79:60665 - "POST /api/v1/auth/refresh-token HTTP/1.1" 401 Unauthorized
699
- INFO: 10.16.25.209:60584 - "GET /health HTTP/1.1" 200 OK
700
- INFO: 2025-12-14T14:26:06 - app.core.supabase_auth: User signed in successfully: viyisa8151@feralrex.com
701
- INFO: 2025-12-14T14:26:07 - app.services.audit_service: Audit log created: login on auth by viyisa8151@feralrex.com
702
- INFO: 2025-12-14T14:26:07 - app.api.v1.auth: User logged in successfully: viyisa8151@feralrex.com
703
- INFO: 10.16.13.79:46983 - "POST /api/v1/auth/login HTTP/1.1" 200 OK
704
- INFO: 2025-12-14T14:26:08 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
705
- INFO: 2025-12-14T14:26:08 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
706
- INFO: 10.16.13.79:46983 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
707
- INFO: 2025-12-14T14:26:08 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
708
- INFO: 2025-12-14T14:26:08 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
709
- INFO: 10.16.25.209:49638 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
710
- INFO: 2025-12-14T14:26:08 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
711
- INFO: 2025-12-14T14:26:08 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
712
- INFO: 10.16.13.79:46983 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
713
- INFO: 2025-12-14T14:26:09 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
714
- INFO: 2025-12-14T14:26:09 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
715
- INFO: 10.16.25.209:49638 - "GET /api/v1/analytics/user/overview?limit=50 HTTP/1.1" 200 OK
716
- INFO: 2025-12-14T14:26:11 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
717
- INFO: 2025-12-14T14:26:11 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
718
- INFO: 10.16.13.79:46983 - "GET /api/v1/profile/me/validation HTTP/1.1" 200 OK
719
- INFO: 2025-12-14T14:26:11 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
720
- INFO: 2025-12-14T14:26:11 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
721
- INFO: 2025-12-14T14:26:11 - app.services.project_service: Listed 1 projects (total: 1) for user 43b778b0-2062-4724-abbb-916a4835a9b0
722
- INFO: 10.16.25.209:49638 - "GET /api/v1/projects?page=1&per_page=100&status=active HTTP/1.1" 200 OK
723
- INFO: 2025-12-14T14:26:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
724
- INFO: 2025-12-14T14:26:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
725
- INFO: 2025-12-14T14:26:14 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user 43b778b0-2062-4724-abbb-916a4835a9b0 - building fresh data
726
- INFO: 2025-12-14T14:26:14 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
727
- INFO: 10.16.25.209:32334 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
728
- INFO: 10.16.13.79:4014 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
729
- INFO: 10.16.13.79:4014 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
730
- INFO: 10.16.25.209:53765 - "GET /health HTTP/1.1" 200 OK
731
- INFO: 10.16.13.79:47714 - "GET /health HTTP/1.1" 200 OK
732
- INFO: 10.16.25.209:21539 - "GET /health HTTP/1.1" 200 OK
733
- INFO: 10.16.25.209:65140 - "GET /health HTTP/1.1" 200 OK
734
- INFO: 10.16.25.209:62036 - "GET /health HTTP/1.1" 200 OK
735
- INFO: 10.16.25.209:11372 - "GET /health HTTP/1.1" 200 OK
736
- INFO: 10.16.13.79:49750 - "GET /health HTTP/1.1" 200 OK
737
- INFO: 10.16.13.79:3826 - "GET /health HTTP/1.1" 200 OK
738
- INFO: 10.16.13.79:41241 - "GET /health HTTP/1.1" 200 OK
739
- INFO: 10.16.25.209:1877 - "GET /health HTTP/1.1" 200 OK
740
- INFO: 10.16.13.79:40747 - "GET /health HTTP/1.1" 200 OK
741
- INFO: 10.16.13.79:2628 - "GET /health HTTP/1.1" 200 OK
742
- INFO: 10.16.13.79:42775 - "GET /health HTTP/1.1" 200 OK
743
- INFO: 10.16.25.209:5802 - "GET /health HTTP/1.1" 200 OK
744
- INFO: 10.16.25.209:40925 - "GET /health HTTP/1.1" 200 OK
745
- INFO: 10.16.13.79:58161 - "GET /health HTTP/1.1" 200 OK
746
- INFO: 10.16.13.79:44864 - "GET /health HTTP/1.1" 200 OK
747
- INFO: 2025-12-14T15:04:12 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
748
- INFO: 2025-12-14T15:04:12 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
749
- INFO: 10.16.25.209:14927 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
750
- INFO: 2025-12-14T15:04:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
751
- INFO: 2025-12-14T15:04:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
752
- INFO: 10.16.25.209:14927 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
753
- INFO: 2025-12-14T15:04:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
754
- INFO: 2025-12-14T15:04:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
755
- INFO: 10.16.13.79:44864 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
756
- INFO: 10.16.25.209:14927 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
757
- INFO: 10.16.25.209:14927 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
758
- INFO: 10.16.13.79:63796 - "GET /health HTTP/1.1" 200 OK
759
- INFO: 2025-12-14T15:04:40 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
760
- INFO: 2025-12-14T15:04:40 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
761
- INFO: 10.16.25.209:27012 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
762
- INFO: 2025-12-14T15:04:41 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
763
- INFO: 2025-12-14T15:04:41 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
764
- INFO: 10.16.25.209:27012 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
765
- INFO: 2025-12-14T15:04:41 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
766
- INFO: 2025-12-14T15:04:41 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
767
- INFO: 10.16.13.79:63796 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
768
- INFO: 10.16.25.209:27012 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
769
- INFO: 10.16.13.79:63796 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
770
- INFO: 10.16.13.79:53891 - "GET /health HTTP/1.1" 200 OK
771
- INFO: 2025-12-14T15:05:13 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
772
- INFO: 2025-12-14T15:05:13 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
773
- INFO: 10.16.13.79:53891 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
774
- INFO: 2025-12-14T15:05:13 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
775
- INFO: 2025-12-14T15:05:13 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
776
- INFO: 10.16.13.79:53891 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
777
- INFO: 2025-12-14T15:05:13 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
778
- INFO: 2025-12-14T15:05:13 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
779
- INFO: 10.16.25.209:8747 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
780
- INFO: 10.16.13.79:53891 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
781
- INFO: 10.16.13.79:53891 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
782
- INFO: 10.16.25.209:19083 - "GET / HTTP/1.1" 200 OK
783
- INFO: 10.16.25.209:34398 - "GET /health HTTP/1.1" 200 OK
784
- INFO: 10.16.25.209:25827 - "GET /health HTTP/1.1" 200 OK
785
- INFO: 2025-12-14T15:10:33 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
786
- INFO: 2025-12-14T15:10:33 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
787
- INFO: 10.16.13.79:24132 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
788
- INFO: 2025-12-14T15:10:33 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
789
- INFO: 2025-12-14T15:10:33 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
790
- INFO: 10.16.13.79:24132 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
791
- INFO: 2025-12-14T15:10:33 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
792
- INFO: 2025-12-14T15:10:33 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
793
- INFO: 10.16.25.209:25827 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
794
- INFO: 10.16.25.209:25827 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
795
- INFO: 10.16.25.209:25827 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
796
- INFO: 10.16.25.209:23533 - "GET /health HTTP/1.1" 200 OK
797
- INFO: 2025-12-14T15:12:05 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
798
- INFO: 2025-12-14T15:12:05 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
799
- INFO: 10.16.13.79:17570 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
800
- INFO: 2025-12-14T15:12:07 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
801
- INFO: 2025-12-14T15:12:07 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
802
- INFO: 10.16.13.79:17570 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
803
- INFO: 2025-12-14T15:12:07 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
804
- INFO: 2025-12-14T15:12:07 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
805
- INFO: 10.16.25.209:23533 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
806
- INFO: 10.16.25.209:23533 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
807
- INFO: 10.16.13.79:17570 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
808
- INFO: 10.16.25.209:22959 - "GET /health HTTP/1.1" 200 OK
809
- INFO: 10.16.25.209:11555 - "GET /health HTTP/1.1" 200 OK
810
- INFO: 2025-12-14T15:13:40 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
811
- INFO: 2025-12-14T15:13:40 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
812
- INFO: 10.16.13.79:49397 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
813
- INFO: 2025-12-14T15:13:41 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
814
- INFO: 2025-12-14T15:13:41 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
815
- INFO: 10.16.13.79:49397 - "GET /api/v1/timesheets/me/timesheets?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page=1&page_size=20 HTTP/1.1" 200 OK
816
- INFO: 2025-12-14T15:13:41 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
817
- INFO: 2025-12-14T15:13:41 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
818
- INFO: 10.16.25.209:50949 - "GET /api/v1/timesheets/stats?start_date=2025-12-01&end_date=2025-12-31&user_id=43b778b0-2062-4724-abbb-916a4835a9b0&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
819
- INFO: 10.16.25.209:22786 - "GET /health HTTP/1.1" 200 OK
820
- INFO: 10.16.13.79:20689 - "GET /health HTTP/1.1" 200 OK
821
- INFO: 10.16.25.209:40673 - "GET /health HTTP/1.1" 200 OK
822
- INFO: 2025-12-14T15:20:13 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
823
- INFO: 2025-12-14T15:20:13 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
824
- INFO: 10.16.25.209:40673 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
825
- INFO: 2025-12-14T15:20:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
826
- INFO: 2025-12-14T15:20:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
827
- INFO: 10.16.25.209:40673 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
828
- INFO: 2025-12-14T15:20:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
829
- INFO: 2025-12-14T15:20:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
830
- INFO: 10.16.13.79:31572 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
831
- INFO: 2025-12-14T15:20:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
832
- INFO: 2025-12-14T15:20:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
833
- INFO: 10.16.13.79:48324 - "GET /api/v1/timesheets/stats?start_date=2025-12-01&end_date=2025-12-31&user_id=43b778b0-2062-4724-abbb-916a4835a9b0&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
834
- INFO: 2025-12-14T15:20:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
835
- INFO: 2025-12-14T15:20:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
836
- INFO: 10.16.25.209:30191 - "GET /api/v1/timesheets/me/timesheets?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page=1&page_size=20 HTTP/1.1" 200 OK
837
- INFO: 10.16.25.209:48853 - "GET /health HTTP/1.1" 200 OK
838
- INFO: 2025-12-14T15:21:09 - app.core.supabase_auth: Session refreshed successfully
839
- INFO: 2025-12-14T15:21:09 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
840
- INFO: 10.16.25.209:61578 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
841
- INFO: 10.16.13.79:32888 - "GET /health HTTP/1.1" 200 OK
842
- INFO: 2025-12-14T15:22:05 - app.core.supabase_auth: User signed in successfully: nadina73@nembors.com
843
- INFO: 2025-12-14T15:22:06 - app.services.audit_service: Audit log created: login on auth by nadina73@nembors.com
844
- INFO: 2025-12-14T15:22:06 - app.api.v1.auth: User logged in successfully: nadina73@nembors.com
845
- INFO: 10.16.25.209:62158 - "POST /api/v1/auth/login HTTP/1.1" 200 OK
846
- INFO: 2025-12-14T15:22:07 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
847
- INFO: 2025-12-14T15:22:07 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
848
- INFO: 10.16.13.79:43055 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
849
- INFO: 2025-12-14T15:22:08 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
850
- INFO: 2025-12-14T15:22:08 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
851
- INFO: 10.16.25.209:62158 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
852
- INFO: 2025-12-14T15:22:08 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
853
- INFO: 2025-12-14T15:22:08 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
854
- INFO: 10.16.13.79:43055 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
855
- INFO: 2025-12-14T15:22:09 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
856
- INFO: 2025-12-14T15:22:09 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
857
- INFO: 10.16.13.79:43055 - "GET /api/v1/analytics/user/overview HTTP/1.1" 200 OK
858
- INFO: 2025-12-14T15:22:12 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
859
- INFO: 2025-12-14T15:22:12 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
860
- INFO: 2025-12-14T15:22:12 - app.services.project_service: Listed 1 projects (total: 1) for user c5cf92be-4172-4fe2-af5c-f05d83b3a938
861
- INFO: 10.16.25.209:30374 - "GET /api/v1/projects?page=1&per_page=100 HTTP/1.1" 200 OK
862
- INFO: 2025-12-14T15:22:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
863
- INFO: 2025-12-14T15:22:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
864
- INFO: 2025-12-14T15:22:16 - app.services.audit_service: Audit log created: update on user_preferences by nadina73@nembors.com
865
- INFO: 2025-12-14T15:22:16 - app.api.v1.auth: Preferences updated for user: nadina73@nembors.com
866
- INFO: 10.16.13.79:15595 - "PUT /api/v1/auth/me/preferences HTTP/1.1" 200 OK
867
- INFO: 2025-12-14T15:22:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
868
- INFO: 2025-12-14T15:22:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
869
- INFO: 2025-12-14T15:22:16 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user c5cf92be-4172-4fe2-af5c-f05d83b3a938 - building fresh data
870
- INFO: 2025-12-14T15:22:16 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
871
- INFO: 10.16.25.209:6202 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
872
- INFO: 2025-12-14T15:22:17 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
873
- INFO: 2025-12-14T15:22:17 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
874
- INFO: 10.16.25.209:6202 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
875
- INFO: 10.16.25.209:6202 - "GET /api/v1/notifications?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page_size=50&is_read=false HTTP/1.1" 200 OK
876
- INFO: 10.16.13.79:15595 - "GET /api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
877
- INFO: 10.16.25.209:1728 - "GET /health HTTP/1.1" 200 OK
878
- INFO: 10.16.13.79:53036 - "GET /health HTTP/1.1" 200 OK
879
- INFO: 10.16.13.79:59924 - "GET /health HTTP/1.1" 200 OK
880
- INFO: 2025-12-14T15:26:14 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
881
- INFO: 2025-12-14T15:26:14 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
882
- INFO: 10.16.13.79:35945 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
883
- INFO: 10.16.25.209:40557 - "GET /health HTTP/1.1" 200 OK
884
- INFO: 2025-12-14T15:26:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
885
- INFO: 2025-12-14T15:26:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
886
- INFO: 10.16.25.209:40557 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
887
- INFO: 2025-12-14T15:26:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
888
- INFO: 2025-12-14T15:26:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
889
- INFO: 10.16.13.79:35945 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
890
- INFO: 2025-12-14T15:26:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
891
- INFO: 2025-12-14T15:26:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
892
- INFO: 10.16.13.79:35945 - "GET /api/v1/analytics/user/overview HTTP/1.1" 200 OK
893
- INFO: 2025-12-14T15:26:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
894
- INFO: 2025-12-14T15:26:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
895
- INFO: 2025-12-14T15:26:16 - app.services.project_service: Listed 1 projects (total: 1) for user c5cf92be-4172-4fe2-af5c-f05d83b3a938
896
- INFO: 10.16.25.209:40557 - "GET /api/v1/projects?page=1&per_page=100 HTTP/1.1" 200 OK
897
- INFO: 10.16.13.79:30398 - "GET /health HTTP/1.1" 200 OK
898
- INFO: 10.16.13.79:36119 - "GET /health HTTP/1.1" 200 OK
899
- INFO: 2025-12-14T15:27:49 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
900
- INFO: 2025-12-14T15:27:49 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
901
- INFO: 2025-12-14T15:27:49 - app.services.audit_service: Audit log created: update on user_preferences by nadina73@nembors.com
902
- INFO: 2025-12-14T15:27:49 - app.api.v1.auth: Preferences updated for user: nadina73@nembors.com
903
- INFO: 10.16.25.209:51672 - "PUT /api/v1/auth/me/preferences HTTP/1.1" 200 OK
904
- INFO: 2025-12-14T15:27:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
905
- INFO: 2025-12-14T15:27:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
906
- INFO: 10.16.25.209:51672 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
907
- INFO: 2025-12-14T15:27:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
908
- INFO: 2025-12-14T15:27:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
909
- INFO: 2025-12-14T15:27:50 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user c5cf92be-4172-4fe2-af5c-f05d83b3a938 - building fresh data
910
- INFO: 2025-12-14T15:27:50 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
911
- INFO: 10.16.13.79:36119 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
912
- INFO: 10.16.13.79:36119 - "GET /api/v1/notifications?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page_size=50&is_read=false HTTP/1.1" 200 OK
913
- INFO: 10.16.25.209:51672 - "GET /api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
914
- INFO: 10.16.25.209:51672 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
915
- INFO: 2025-12-14T15:27:53 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
916
- INFO: 2025-12-14T15:27:53 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
917
- WARNING: 2025-12-14T15:27:53 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
918
- INFO: 10.16.13.79:36119 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
919
- INFO: 10.16.13.79:36119 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
920
- INFO: 2025-12-14T15:27:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
921
- INFO: 2025-12-14T15:27:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
922
- WARNING: 2025-12-14T15:27:54 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
923
- INFO: 10.16.25.209:51672 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
924
- INFO: 10.16.25.209:56295 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
925
- INFO: 2025-12-14T15:28:20 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
926
- INFO: 2025-12-14T15:28:20 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
927
- WARNING: 2025-12-14T15:28:20 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
928
- INFO: 10.16.13.79:6554 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
929
- INFO: 10.16.25.209:56295 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
930
- INFO: 2025-12-14T15:28:22 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
931
- INFO: 2025-12-14T15:28:22 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
932
- WARNING: 2025-12-14T15:28:22 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
933
- INFO: 10.16.13.79:6554 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
934
- INFO: 10.16.13.79:36247 - "GET /health HTTP/1.1" 200 OK
935
- INFO: 2025-12-14T15:29:34 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
936
- INFO: 2025-12-14T15:29:34 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
937
- INFO: 10.16.25.209:59932 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
938
- INFO: 10.16.13.79:29739 - "GET /health HTTP/1.1" 200 OK
939
- INFO: 2025-12-14T15:29:35 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
940
- INFO: 2025-12-14T15:29:35 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
941
- INFO: 10.16.13.79:29739 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
942
- INFO: 2025-12-14T15:29:35 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
943
- INFO: 2025-12-14T15:29:35 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
944
- INFO: 10.16.25.209:59932 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
945
- INFO: 2025-12-14T15:29:36 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
946
- INFO: 2025-12-14T15:29:36 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
947
- INFO: 10.16.25.209:59932 - "GET /api/v1/timesheets/stats?start_date=2025-12-01&end_date=2025-12-31&user_id=43b778b0-2062-4724-abbb-916a4835a9b0&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
948
- INFO: 2025-12-14T15:29:36 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
949
- INFO: 2025-12-14T15:29:36 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
950
- INFO: 10.16.13.79:29739 - "GET /api/v1/timesheets/me/timesheets?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page=1&page_size=20 HTTP/1.1" 200 OK
951
- INFO: 10.16.25.209:25142 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
952
- INFO: 10.16.25.209:33363 - "GET /health HTTP/1.1" 200 OK
953
- INFO: 2025-12-14T15:29:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
954
- INFO: 2025-12-14T15:29:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
955
- WARNING: 2025-12-14T15:29:54 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
956
- INFO: 2025-12-14T15:29:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
957
- INFO: 2025-12-14T15:29:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
958
- INFO: 10.16.25.209:52449 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
959
- INFO: 2025-12-14T15:29:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
960
- INFO: 2025-12-14T15:29:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
961
- INFO: 10.16.13.79:14062 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
962
- INFO: 10.16.13.79:21400 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
963
 
 
1
+ ===== Application Startup at 2025-12-14 17:46:39 =====
2
 
3
  INFO: Started server process [7]
4
  INFO: Waiting for application startup.
5
+ INFO: 2025-12-14T17:46:53 - app.main: ============================================================
6
+ INFO: 2025-12-14T17:46:53 - app.main: 🚀 SwiftOps API v1.0.0 | PRODUCTION
7
+ INFO: 2025-12-14T17:46:53 - app.main: 📊 Dashboard: Enabled
8
+ INFO: 2025-12-14T17:46:53 - app.main: ============================================================
9
+ INFO: 2025-12-14T17:46:53 - app.main: 📦 Database:
10
+ INFO: 2025-12-14T17:46:53 - app.main: ✓ Connected | 45 tables | 6 users
11
+ INFO: 2025-12-14T17:46:53 - app.main: 💾 Cache & Sessions:
12
+ INFO: 2025-12-14T17:46:54 - app.services.otp_service: ✅ OTP Service initialized with Redis storage
13
+ INFO: 2025-12-14T17:46:54 - app.main: ✓ Redis: Connected
14
+ INFO: 2025-12-14T17:46:54 - app.main: 🔌 External Services:
15
+ INFO: 2025-12-14T17:46:55 - app.main: ✓ Cloudinary: Connected
16
+ INFO: 2025-12-14T17:46:55 - app.main: ✓ Resend: Configured
17
+ INFO: 2025-12-14T17:46:55 - app.main: ○ WASender: Disconnected
18
+ INFO: 2025-12-14T17:46:55 - app.main: ✓ Supabase: Connected | 6 buckets
19
+ INFO: 2025-12-14T17:46:55 - app.main: ============================================================
20
+ INFO: 2025-12-14T17:46:55 - app.main: ✅ Startup complete | Ready to serve requests
21
+ INFO: 2025-12-14T17:46:55 - app.main: ============================================================
22
  INFO: Application startup complete.
23
  INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRL+C to quit)
24
+ INFO: 10.16.13.79:43255 - "GET /health HTTP/1.1" 200 OK
25
+ INFO: 10.16.13.79:18834 - "GET /health HTTP/1.1" 200 OK
26
+ INFO: 2025-12-14T17:48:42 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
27
+ INFO: 2025-12-14T17:48:42 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
28
+ INFO: 10.16.25.209:13130 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
29
+ INFO: 2025-12-14T17:48:43 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
30
+ INFO: 2025-12-14T17:48:43 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
31
+ INFO: 10.16.13.79:18834 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
32
+ INFO: 2025-12-14T17:48:43 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
33
+ INFO: 2025-12-14T17:48:43 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
34
+ INFO: 10.16.25.209:13130 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
35
+ INFO: 2025-12-14T17:48:46 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
36
+ INFO: 2025-12-14T17:48:46 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
37
+ INFO: 10.16.13.79:56668 - "GET /api/v1/profile/me HTTP/1.1" 200 OK
38
+ INFO: 2025-12-14T17:48:47 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
39
+ INFO: 2025-12-14T17:48:47 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
40
+ INFO: 10.16.13.79:56668 - "GET /api/v1/financial-accounts/me HTTP/1.1" 200 OK
41
+ INFO: 2025-12-14T17:48:47 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
42
+ INFO: 2025-12-14T17:48:47 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
43
+ INFO: 10.16.25.209:49177 - "GET /api/v1/documents/users/me HTTP/1.1" 200 OK
44
+ INFO: 2025-12-14T17:48:47 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
45
+ INFO: 2025-12-14T17:48:47 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
46
+ INFO: 10.16.13.79:56668 - "GET /api/v1/asset-assignments/me HTTP/1.1" 200 OK
47
+ INFO: 10.16.25.209:3227 - "GET /health HTTP/1.1" 200 OK
48
+ INFO: 10.16.25.209:17214 - "GET /health HTTP/1.1" 200 OK
49
+ INFO: 10.16.25.209:14830 - "GET /health HTTP/1.1" 200 OK
50
+ INFO: 10.16.13.79:45163 - "GET / HTTP/1.1" 200 OK
51
+ INFO: 10.16.25.209:25704 - "GET /health HTTP/1.1" 200 OK
52
+ INFO: 2025-12-14T18:07:13 - app.core.supabase_auth: Session refreshed successfully
53
+ INFO: 2025-12-14T18:07:13 - app.api.v1.auth: Token refreshed successfully for: nadina73@nembors.com
54
+ INFO: 10.16.13.79:44789 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
55
+ INFO: 10.16.25.209:10469 - "GET /health HTTP/1.1" 200 OK
56
+ INFO: 10.16.13.79:56568 - "GET /health HTTP/1.1" 200 OK
57
+ INFO: 10.16.25.209:24652 - "GET /health HTTP/1.1" 200 OK
58
+ INFO: 10.16.25.209:7231 - "GET /health HTTP/1.1" 200 OK
59
+ INFO: 10.16.25.209:8349 - "GET /health HTTP/1.1" 200 OK
60
+ INFO: 2025-12-14T18:18:59 - app.core.supabase_auth: Session refreshed successfully
61
+ INFO: 2025-12-14T18:18:59 - app.api.v1.auth: Token refreshed successfully for: viyisa8151@feralrex.com
62
+ INFO: 10.16.25.209:53665 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
63
+ INFO: 10.16.13.79:14521 - "GET /health HTTP/1.1" 200 OK
64
+ INFO: 10.16.13.79:15813 - "GET /health HTTP/1.1" 200 OK
65
+ INFO: 10.16.13.79:53610 - "GET /health HTTP/1.1" 200 OK
66
+ INFO: 2025-12-14T18:23:44 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
67
+ INFO: 2025-12-14T18:23:44 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
68
+ INFO: 10.16.25.209:31102 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
69
+ INFO: 2025-12-14T18:23:45 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
70
+ INFO: 2025-12-14T18:23:45 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
71
+ INFO: 10.16.13.79:61923 - "GET /api/v1/analytics/user/overview HTTP/1.1" 200 OK
72
+ INFO: 2025-12-14T18:23:51 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
73
+ INFO: 2025-12-14T18:23:51 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
74
+ INFO: 2025-12-14T18:23:51 - app.services.project_service: Listed 1 projects (total: 1) for user c5cf92be-4172-4fe2-af5c-f05d83b3a938
75
+ INFO: 10.16.25.209:16602 - "GET /api/v1/projects?page=1&per_page=100 HTTP/1.1" 200 OK
76
+ INFO: 2025-12-14T18:23:53 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
77
+ INFO: 2025-12-14T18:23:53 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
78
+ INFO: 2025-12-14T18:23:54 - app.services.audit_service: Audit log created: update on user_preferences by nadina73@nembors.com
79
+ INFO: 2025-12-14T18:23:54 - app.api.v1.auth: Preferences updated for user: nadina73@nembors.com
80
+ INFO: 10.16.25.209:16602 - "PUT /api/v1/auth/me/preferences HTTP/1.1" 200 OK
81
+ INFO: 2025-12-14T18:23:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
82
+ INFO: 2025-12-14T18:23:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
83
+ INFO: 10.16.13.79:18649 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
84
+ INFO: 2025-12-14T18:23:55 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
85
+ INFO: 2025-12-14T18:23:55 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
86
+ INFO: 2025-12-14T18:23:55 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user c5cf92be-4172-4fe2-af5c-f05d83b3a938 - building fresh data
87
+ INFO: 2025-12-14T18:23:56 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
88
+ INFO: 10.16.25.209:16602 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
89
+ INFO: 10.16.25.209:16602 - "GET /api/v1/notifications?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page_size=50&is_read=false HTTP/1.1" 200 OK
90
+ INFO: 10.16.13.79:18649 - "GET /api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
91
+ INFO: 10.16.25.209:15477 - "GET /api/v1/notifications?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page_size=50&from_date=2025-12-14 HTTP/1.1" 200 OK
92
+ INFO: 2025-12-14T18:24:29 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
93
+ INFO: 2025-12-14T18:24:29 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
94
+ INFO: 10.16.13.79:58405 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 200 OK
95
+ INFO: 2025-12-14T18:24:29 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
96
+ INFO: 2025-12-14T18:24:29 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
97
+ INFO: 10.16.13.79:44688 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
98
+ INFO: 2025-12-14T18:24:29 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
99
+ INFO: 2025-12-14T18:24:29 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
100
+ INFO: 10.16.25.209:4203 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations HTTP/1.1" 200 OK
101
+ INFO: 2025-12-14T18:24:30 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
102
+ INFO: 2025-12-14T18:24:30 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
103
+ INFO: 10.16.13.79:37567 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
104
+ INFO: 2025-12-14T18:24:30 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
105
+ INFO: 2025-12-14T18:24:30 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
106
+ INFO: 10.16.25.209:50737 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
107
+ INFO: 2025-12-14T18:24:30 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
108
+ INFO: 2025-12-14T18:24:30 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
109
+ INFO: 10.16.25.209:43330 - "GET /api/v1/users?skip=0&limit=100 HTTP/1.1" 200 OK
110
+ INFO: 10.16.13.79:60719 - "GET /health HTTP/1.1" 200 OK
111
+ INFO: 10.16.13.79:6045 - "GET /health HTTP/1.1" 200 OK
112
+ INFO: 2025-12-14T18:31:46 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
113
+ INFO: 2025-12-14T18:31:46 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
114
+ INFO: 10.16.13.79:6045 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
115
+ INFO: 2025-12-14T18:31:47 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
116
+ INFO: 2025-12-14T18:31:47 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
117
+ INFO: 10.16.13.79:6045 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
118
+ INFO: 2025-12-14T18:31:47 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
119
+ INFO: 2025-12-14T18:31:47 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
120
+ INFO: 10.16.25.209:53924 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
121
+ INFO: 2025-12-14T18:32:12 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
122
+ INFO: 2025-12-14T18:32:12 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
123
+ INFO: 2025-12-14T18:32:12 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
124
+ INFO: 2025-12-14T18:32:12 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
125
+ INFO: 10.16.13.79:5532 - "GET /api/v1/payroll?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14&page=1&page_size=20 HTTP/1.1" 200 OK
126
+ INFO: 10.16.25.209:34749 - "GET /api/v1/payroll/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14 HTTP/1.1" 422 Unprocessable Entity
127
+ INFO: 2025-12-14T18:32:13 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
128
+ INFO: 2025-12-14T18:32:13 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
129
+ INFO: 10.16.13.79:5532 - "GET /api/v1/payroll/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&period_start_date=2025-12-08&period_end_date=2025-12-14 HTTP/1.1" 422 Unprocessable Entity
130
+ INFO: 10.16.25.209:1062 - "GET /health HTTP/1.1" 200 OK
131
+ INFO: 10.16.13.79:64673 - "GET /health HTTP/1.1" 200 OK
132
+ INFO: 10.16.13.79:29472 - "GET /health HTTP/1.1" 200 OK
133
+ INFO: 10.16.25.209:12335 - "GET /health HTTP/1.1" 200 OK
134
+ INFO: 10.16.25.209:42061 - "GET /health HTTP/1.1" 200 OK
135
+ INFO: 10.16.25.209:40286 - "GET /health HTTP/1.1" 200 OK
136
+ INFO: 10.16.25.209:46602 - "GET /health HTTP/1.1" 200 OK
137
+ INFO: 10.16.13.79:60834 - "GET /health HTTP/1.1" 200 OK
138
+ INFO: 10.16.25.209:62545 - "GET /health HTTP/1.1" 200 OK
139
+ INFO: 10.16.25.209:64921 - "GET /health HTTP/1.1" 200 OK
140
+ INFO: 10.16.13.79:35302 - "GET /health HTTP/1.1" 200 OK
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
 
src/app/api/v1/payroll.py CHANGED
@@ -306,37 +306,105 @@ async def generate_payroll_batch(
306
  # PAYROLL CRUD
307
  # ============================================
308
 
309
- @router.get("/{payroll_id}", response_model=PayrollResponse, status_code=status.HTTP_200_OK)
310
- async def get_payroll(
311
- payroll_id: UUID,
 
 
 
 
 
312
  current_user: User = Depends(get_current_active_user),
313
  db: Session = Depends(get_db)
314
  ):
315
  """
316
- Get payroll record by ID
317
 
318
  **Authorization:**
319
  - Platform admins (view all)
320
  - Project managers (view all)
321
  - Dispatchers (view all)
322
- - Workers (view their own only)
323
 
324
- **Response includes:**
325
- - All payroll fields
326
- - user_name, user_email (worker details)
327
- - project_name
328
- - paid_by_name (if paid)
329
- - Computed properties (can_recalculate, is_current_week, net_earnings)
 
 
 
 
 
 
 
 
 
 
330
  """
331
  try:
332
- return PayrollService.get_payroll(db, payroll_id, current_user)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  except HTTPException:
334
  raise
335
  except Exception as e:
336
- logger.error(f"Error getting payroll: {e}", exc_info=True)
337
  raise HTTPException(
338
  status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
339
- detail=f"Failed to get payroll: {str(e)}"
340
  )
341
 
342
 
@@ -436,105 +504,6 @@ async def get_user_payroll_history(
436
  )
437
 
438
 
439
- @router.get("/stats", status_code=status.HTTP_200_OK)
440
- async def get_payroll_stats(
441
- project_id: Optional[UUID] = Query(None, description="Filter by project"),
442
- period_start_date: Optional[date] = Query(None, description="Filter by period start"),
443
- period_end_date: Optional[date] = Query(None, description="Filter by period end"),
444
- current_user: User = Depends(get_current_active_user),
445
- db: Session = Depends(get_db)
446
- ):
447
- """
448
- Get aggregated payroll statistics for dashboard
449
-
450
- **Authorization:**
451
- - Platform admins (view all)
452
- - Project managers (view all)
453
- - Dispatchers (view all)
454
-
455
- **Query Parameters:**
456
- - project_id: Filter by specific project (optional)
457
- - period_start_date: Filter by period start (optional)
458
- - period_end_date: Filter by period end (optional)
459
-
460
- **Returns:**
461
- - total_payrolls: Total number of payroll records
462
- - total_paid: Number of paid payrolls
463
- - total_unpaid: Number of unpaid payrolls
464
- - total_amount: Sum of all payroll amounts
465
- - total_paid_amount: Sum of paid amounts
466
- - total_unpaid_amount: Sum of unpaid amounts
467
- - total_workers: Number of unique workers
468
- - average_per_worker: Average payment per worker
469
- - total_days_worked: Sum of all days worked
470
- - total_tickets_closed: Sum of all tickets closed
471
- """
472
- try:
473
- # Authorization
474
- if current_user.role not in [AppRole.PLATFORM_ADMIN, AppRole.PROJECT_MANAGER, AppRole.DISPATCHER]:
475
- raise HTTPException(
476
- status_code=status.HTTP_403_FORBIDDEN,
477
- detail="Not authorized to view payroll statistics"
478
- )
479
-
480
- # Build query
481
- query = db.query(UserPayroll)
482
-
483
- # Apply filters
484
- if project_id:
485
- query = query.filter(UserPayroll.project_id == project_id)
486
- if period_start_date:
487
- query = query.filter(UserPayroll.period_start_date >= period_start_date)
488
- if period_end_date:
489
- query = query.filter(UserPayroll.period_end_date <= period_end_date)
490
-
491
- # Get all payrolls
492
- payrolls = query.all()
493
-
494
- # Calculate statistics
495
- total_payrolls = len(payrolls)
496
- paid_payrolls = [p for p in payrolls if p.is_paid]
497
- unpaid_payrolls = [p for p in payrolls if not p.is_paid]
498
-
499
- total_paid = len(paid_payrolls)
500
- total_unpaid = len(unpaid_payrolls)
501
-
502
- total_amount = sum(float(p.total_amount) for p in payrolls)
503
- total_paid_amount = sum(float(p.total_amount) for p in paid_payrolls)
504
- total_unpaid_amount = sum(float(p.total_amount) for p in unpaid_payrolls)
505
-
506
- unique_workers = len(set(p.user_id for p in payrolls))
507
- average_per_worker = total_amount / unique_workers if unique_workers > 0 else 0
508
-
509
- total_days_worked = sum(p.days_worked or 0 for p in payrolls)
510
- total_tickets_closed = sum(p.tickets_closed or 0 for p in payrolls)
511
-
512
- return {
513
- "total_payrolls": total_payrolls,
514
- "total_paid": total_paid,
515
- "total_unpaid": total_unpaid,
516
- "total_amount": round(total_amount, 2),
517
- "total_paid_amount": round(total_paid_amount, 2),
518
- "total_unpaid_amount": round(total_unpaid_amount, 2),
519
- "total_workers": unique_workers,
520
- "average_per_worker": round(average_per_worker, 2),
521
- "total_days_worked": total_days_worked,
522
- "total_tickets_closed": total_tickets_closed,
523
- "period_start_date": period_start_date,
524
- "period_end_date": period_end_date,
525
- "project_id": str(project_id) if project_id else None
526
- }
527
-
528
- except HTTPException:
529
- raise
530
- except Exception as e:
531
- logger.error(f"Error getting payroll stats: {e}", exc_info=True)
532
- raise HTTPException(
533
- status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
534
- detail=f"Failed to get payroll stats: {str(e)}"
535
- )
536
-
537
-
538
  @router.get("", response_model=PayrollListResponse, status_code=status.HTTP_200_OK)
539
  async def list_payrolls(
540
  user_id: Optional[UUID] = Query(None, description="Filter by user"),
 
306
  # PAYROLL CRUD
307
  # ============================================
308
 
309
+ # NOTE: Specific routes MUST come before parameterized routes
310
+ # /stats and /users/{user_id}/payroll must be before /{payroll_id}
311
+
312
+ @router.get("/stats", status_code=status.HTTP_200_OK)
313
+ async def get_payroll_stats(
314
+ project_id: Optional[UUID] = Query(None, description="Filter by project"),
315
+ period_start_date: Optional[date] = Query(None, description="Filter by period start"),
316
+ period_end_date: Optional[date] = Query(None, description="Filter by period end"),
317
  current_user: User = Depends(get_current_active_user),
318
  db: Session = Depends(get_db)
319
  ):
320
  """
321
+ Get aggregated payroll statistics for dashboard
322
 
323
  **Authorization:**
324
  - Platform admins (view all)
325
  - Project managers (view all)
326
  - Dispatchers (view all)
 
327
 
328
+ **Query Parameters:**
329
+ - project_id: Filter by specific project (optional)
330
+ - period_start_date: Filter by period start (optional)
331
+ - period_end_date: Filter by period end (optional)
332
+
333
+ **Returns:**
334
+ - total_payrolls: Total number of payroll records
335
+ - total_paid: Number of paid payrolls
336
+ - total_unpaid: Number of unpaid payrolls
337
+ - total_amount: Sum of all payroll amounts
338
+ - total_paid_amount: Sum of paid amounts
339
+ - total_unpaid_amount: Sum of unpaid amounts
340
+ - total_workers: Number of unique workers
341
+ - average_per_worker: Average payment per worker
342
+ - total_days_worked: Sum of all days worked
343
+ - total_tickets_closed: Sum of all tickets closed
344
  """
345
  try:
346
+ # Authorization
347
+ if current_user.role not in [AppRole.PLATFORM_ADMIN, AppRole.PROJECT_MANAGER, AppRole.DISPATCHER]:
348
+ raise HTTPException(
349
+ status_code=status.HTTP_403_FORBIDDEN,
350
+ detail="Not authorized to view payroll statistics"
351
+ )
352
+
353
+ # Build query
354
+ query = db.query(UserPayroll)
355
+
356
+ # Apply filters
357
+ if project_id:
358
+ query = query.filter(UserPayroll.project_id == project_id)
359
+ if period_start_date:
360
+ query = query.filter(UserPayroll.period_start_date >= period_start_date)
361
+ if period_end_date:
362
+ query = query.filter(UserPayroll.period_end_date <= period_end_date)
363
+
364
+ # Get all payrolls
365
+ payrolls = query.all()
366
+
367
+ # Calculate statistics
368
+ total_payrolls = len(payrolls)
369
+ paid_payrolls = [p for p in payrolls if p.is_paid]
370
+ unpaid_payrolls = [p for p in payrolls if not p.is_paid]
371
+
372
+ total_paid = len(paid_payrolls)
373
+ total_unpaid = len(unpaid_payrolls)
374
+
375
+ total_amount = sum(float(p.total_amount) for p in payrolls)
376
+ total_paid_amount = sum(float(p.total_amount) for p in paid_payrolls)
377
+ total_unpaid_amount = sum(float(p.total_amount) for p in unpaid_payrolls)
378
+
379
+ unique_workers = len(set(p.user_id for p in payrolls))
380
+ average_per_worker = total_amount / unique_workers if unique_workers > 0 else 0
381
+
382
+ total_days_worked = sum(p.days_worked or 0 for p in payrolls)
383
+ total_tickets_closed = sum(p.tickets_closed or 0 for p in payrolls)
384
+
385
+ return {
386
+ "total_payrolls": total_payrolls,
387
+ "total_paid": total_paid,
388
+ "total_unpaid": total_unpaid,
389
+ "total_amount": round(total_amount, 2),
390
+ "total_paid_amount": round(total_paid_amount, 2),
391
+ "total_unpaid_amount": round(total_unpaid_amount, 2),
392
+ "total_workers": unique_workers,
393
+ "average_per_worker": round(average_per_worker, 2),
394
+ "total_days_worked": total_days_worked,
395
+ "total_tickets_closed": total_tickets_closed,
396
+ "period_start_date": period_start_date,
397
+ "period_end_date": period_end_date,
398
+ "project_id": str(project_id) if project_id else None
399
+ }
400
+
401
  except HTTPException:
402
  raise
403
  except Exception as e:
404
+ logger.error(f"Error getting payroll stats: {e}", exc_info=True)
405
  raise HTTPException(
406
  status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
407
+ detail=f"Failed to get payroll stats: {str(e)}"
408
  )
409
 
410
 
 
504
  )
505
 
506
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
  @router.get("", response_model=PayrollListResponse, status_code=status.HTTP_200_OK)
508
  async def list_payrolls(
509
  user_id: Optional[UUID] = Query(None, description="Filter by user"),