kamau1 commited on
Commit
f9fc05b
·
1 Parent(s): 04eee22

fix: Resolve invitation validation error - determine org based on invited role

Browse files

- Fixed 500 error when inviting users to projects
- Issue: InvitationCreate validator rejects both client_id and contractor_id
- Solution: Determine organization based on invited role
- Contractor roles (dispatcher, field_agent, driver) -> contractor_id
- Client roles (client_admin) -> client_id
- Ambiguous roles (sales_manager, sales_agent) -> default to contractor_id
- Prevents 'User cannot be linked to both client and contractor' validation error

docs/devlogs/browser/browserconsole.txt CHANGED
@@ -1,232 +1,223 @@
1
- chunk-276SZO74.js?v=8b1c4295:21551 Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
2
  core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
3
- react-router-dom.js?v=8b1c4295: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.
4
- warnOnce @ react-router-dom.js?v=8b1c4295:4393
5
- logDeprecation @ react-router-dom.js?v=8b1c4295:4396
6
- logV6DeprecationWarnings @ react-router-dom.js?v=8b1c4295:4399
7
- (anonymous) @ react-router-dom.js?v=8b1c4295:5271
8
- commitHookEffectListMount @ chunk-276SZO74.js?v=8b1c4295:16915
9
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=8b1c4295:18156
10
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=8b1c4295:18129
11
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=8b1c4295:18119
12
- commitPassiveMountEffects @ chunk-276SZO74.js?v=8b1c4295:18109
13
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=8b1c4295:19490
14
- flushPassiveEffects @ chunk-276SZO74.js?v=8b1c4295:19447
15
- (anonymous) @ chunk-276SZO74.js?v=8b1c4295:19328
16
- workLoop @ chunk-276SZO74.js?v=8b1c4295:197
17
- flushWork @ chunk-276SZO74.js?v=8b1c4295:176
18
- performWorkUntilDeadline @ chunk-276SZO74.js?v=8b1c4295:384
19
- react-router-dom.js?v=8b1c4295:4393 ⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath.
20
- warnOnce @ react-router-dom.js?v=8b1c4295:4393
21
- logDeprecation @ react-router-dom.js?v=8b1c4295:4396
22
- logV6DeprecationWarnings @ react-router-dom.js?v=8b1c4295:4402
23
- (anonymous) @ react-router-dom.js?v=8b1c4295:5271
24
- commitHookEffectListMount @ chunk-276SZO74.js?v=8b1c4295:16915
25
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=8b1c4295:18156
26
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=8b1c4295:18129
27
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=8b1c4295:18119
28
- commitPassiveMountEffects @ chunk-276SZO74.js?v=8b1c4295:18109
29
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=8b1c4295:19490
30
- flushPassiveEffects @ chunk-276SZO74.js?v=8b1c4295:19447
31
- (anonymous) @ chunk-276SZO74.js?v=8b1c4295:19328
32
- workLoop @ chunk-276SZO74.js?v=8b1c4295:197
33
- flushWork @ chunk-276SZO74.js?v=8b1c4295:176
34
- performWorkUntilDeadline @ chunk-276SZO74.js?v=8b1c4295:384
35
- core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (824ms)
36
- core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard
37
- core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/activity-feed?limit=20
38
- core.ts:117 ℹ️ [19:16:22] [COMPONENT] ProjectDashboardPage: Project dashboard loaded {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentProject: 'Atomio Fttx'}
39
  core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
40
- core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/activity-feed?limit=20 200 (3.80s)
41
- core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard → 200 (3.80s)
42
- core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/sales-orders/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
43
- core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (1.30s)
44
- dashboard.service.ts:278 GET https://kamau1-swiftops-backend.hf.space/api/v1/sales-orders/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 422 (Unprocessable Content)
45
- getSalesOrderStats @ dashboard.service.ts:278
46
- queryFn @ DashboardTrends.tsx:38
47
- fetchFn @ @tanstack_react-query.js?v=8b1c4295:881
48
- run @ @tanstack_react-query.js?v=8b1c4295:513
49
- start @ @tanstack_react-query.js?v=8b1c4295:555
50
- fetch @ @tanstack_react-query.js?v=8b1c4295:969
51
- executeFetch_fn @ @tanstack_react-query.js?v=8b1c4295:2280
52
- onSubscribe @ @tanstack_react-query.js?v=8b1c4295:1983
53
- subscribe @ @tanstack_react-query.js?v=8b1c4295:24
54
- (anonymous) @ @tanstack_react-query.js?v=8b1c4295:3147
55
- subscribeToStore @ chunk-276SZO74.js?v=8b1c4295:11984
56
- commitHookEffectListMount @ chunk-276SZO74.js?v=8b1c4295:16915
57
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=8b1c4295:18156
58
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=8b1c4295:18129
59
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=8b1c4295:18119
60
- commitPassiveMountEffects @ chunk-276SZO74.js?v=8b1c4295:18109
61
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=8b1c4295:19490
62
- flushPassiveEffects @ chunk-276SZO74.js?v=8b1c4295:19447
63
- commitRootImpl @ chunk-276SZO74.js?v=8b1c4295:19416
64
- commitRoot @ chunk-276SZO74.js?v=8b1c4295:19277
65
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=8b1c4295:18895
66
- flushSyncCallbacks @ chunk-276SZO74.js?v=8b1c4295:9119
67
- (anonymous) @ chunk-276SZO74.js?v=8b1c4295:18627
68
- setTimeout
69
- defaultScheduler @ @tanstack_react-query.js?v=8b1c4295:565
70
- flush @ @tanstack_react-query.js?v=8b1c4295:589
71
- batch @ @tanstack_react-query.js?v=8b1c4295:607
72
- dispatch_fn @ @tanstack_react-query.js?v=8b1c4295:1040
73
- setData @ @tanstack_react-query.js?v=8b1c4295:718
74
- onSuccess @ @tanstack_react-query.js?v=8b1c4295:940
75
- resolve @ @tanstack_react-query.js?v=8b1c4295:475
76
- Promise.then
77
- run @ @tanstack_react-query.js?v=8b1c4295:517
78
- start @ @tanstack_react-query.js?v=8b1c4295:555
79
- fetch @ @tanstack_react-query.js?v=8b1c4295:969
80
- executeFetch_fn @ @tanstack_react-query.js?v=8b1c4295:2280
81
- onSubscribe @ @tanstack_react-query.js?v=8b1c4295:1983
82
- subscribe @ @tanstack_react-query.js?v=8b1c4295:24
83
- (anonymous) @ @tanstack_react-query.js?v=8b1c4295:3147
84
- subscribeToStore @ chunk-276SZO74.js?v=8b1c4295:11984
85
- commitHookEffectListMount @ chunk-276SZO74.js?v=8b1c4295:16915
86
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=8b1c4295:18156
87
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=8b1c4295:18129
88
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=8b1c4295:18119
89
- commitPassiveMountEffects @ chunk-276SZO74.js?v=8b1c4295:18109
90
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=8b1c4295:19490
91
- flushPassiveEffects @ chunk-276SZO74.js?v=8b1c4295:19447
92
- commitRootImpl @ chunk-276SZO74.js?v=8b1c4295:19416
93
- commitRoot @ chunk-276SZO74.js?v=8b1c4295:19277
94
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=8b1c4295:18895
95
- flushSyncCallbacks @ chunk-276SZO74.js?v=8b1c4295:9119
96
- (anonymous) @ chunk-276SZO74.js?v=8b1c4295:18627
97
- setTimeout
98
- defaultScheduler @ @tanstack_react-query.js?v=8b1c4295:565
99
- flush @ @tanstack_react-query.js?v=8b1c4295:589
100
- batch @ @tanstack_react-query.js?v=8b1c4295:607
101
- dispatch_fn @ @tanstack_react-query.js?v=8b1c4295:1040
102
- setData @ @tanstack_react-query.js?v=8b1c4295:718
103
- onSuccess @ @tanstack_react-query.js?v=8b1c4295:940
104
- resolve @ @tanstack_react-query.js?v=8b1c4295:475
105
- Promise.then
106
- run @ @tanstack_react-query.js?v=8b1c4295:517
107
- start @ @tanstack_react-query.js?v=8b1c4295:555
108
- fetch @ @tanstack_react-query.js?v=8b1c4295:969
109
- executeFetch_fn @ @tanstack_react-query.js?v=8b1c4295:2280
110
- onSubscribe @ @tanstack_react-query.js?v=8b1c4295:1983
111
- subscribe @ @tanstack_react-query.js?v=8b1c4295:24
112
- (anonymous) @ @tanstack_react-query.js?v=8b1c4295:3147
113
- subscribeToStore @ chunk-276SZO74.js?v=8b1c4295:11984
114
- commitHookEffectListMount @ chunk-276SZO74.js?v=8b1c4295:16915
115
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=8b1c4295:18156
116
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=8b1c4295:18129
117
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=8b1c4295:18119
118
- commitPassiveMountEffects @ chunk-276SZO74.js?v=8b1c4295:18109
119
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=8b1c4295:19490
120
- flushPassiveEffects @ chunk-276SZO74.js?v=8b1c4295:19447
121
- (anonymous) @ chunk-276SZO74.js?v=8b1c4295:19328
122
- workLoop @ chunk-276SZO74.js?v=8b1c4295:197
123
- flushWork @ chunk-276SZO74.js?v=8b1c4295:176
124
- performWorkUntilDeadline @ chunk-276SZO74.js?v=8b1c4295:384
125
- core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/sales-orders/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 422 (5.16s)
126
- core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/sales-orders/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
127
- dashboard.service.ts:278 GET https://kamau1-swiftops-backend.hf.space/api/v1/sales-orders/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 422 (Unprocessable Content)
128
- getSalesOrderStats @ dashboard.service.ts:278
129
- queryFn @ DashboardTrends.tsx:38
130
- fetchFn @ @tanstack_react-query.js?v=8b1c4295:881
131
- run @ @tanstack_react-query.js?v=8b1c4295:513
132
- (anonymous) @ @tanstack_react-query.js?v=8b1c4295:538
133
- Promise.then
134
- (anonymous) @ @tanstack_react-query.js?v=8b1c4295:534
135
- Promise.catch
136
- run @ @tanstack_react-query.js?v=8b1c4295:517
137
- start @ @tanstack_react-query.js?v=8b1c4295:555
138
- fetch @ @tanstack_react-query.js?v=8b1c4295:969
139
- executeFetch_fn @ @tanstack_react-query.js?v=8b1c4295:2280
140
- onSubscribe @ @tanstack_react-query.js?v=8b1c4295:1983
141
- subscribe @ @tanstack_react-query.js?v=8b1c4295:24
142
- (anonymous) @ @tanstack_react-query.js?v=8b1c4295:3147
143
- subscribeToStore @ chunk-276SZO74.js?v=8b1c4295:11984
144
- commitHookEffectListMount @ chunk-276SZO74.js?v=8b1c4295:16915
145
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=8b1c4295:18156
146
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=8b1c4295:18129
147
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=8b1c4295:18119
148
- commitPassiveMountEffects @ chunk-276SZO74.js?v=8b1c4295:18109
149
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=8b1c4295:19490
150
- flushPassiveEffects @ chunk-276SZO74.js?v=8b1c4295:19447
151
- commitRootImpl @ chunk-276SZO74.js?v=8b1c4295:19416
152
- commitRoot @ chunk-276SZO74.js?v=8b1c4295:19277
153
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=8b1c4295:18895
154
- flushSyncCallbacks @ chunk-276SZO74.js?v=8b1c4295:9119
155
- (anonymous) @ chunk-276SZO74.js?v=8b1c4295:18627
156
- setTimeout
157
- defaultScheduler @ @tanstack_react-query.js?v=8b1c4295:565
158
- flush @ @tanstack_react-query.js?v=8b1c4295:589
159
- batch @ @tanstack_react-query.js?v=8b1c4295:607
160
- dispatch_fn @ @tanstack_react-query.js?v=8b1c4295:1040
161
- setData @ @tanstack_react-query.js?v=8b1c4295:718
162
- onSuccess @ @tanstack_react-query.js?v=8b1c4295:940
163
- resolve @ @tanstack_react-query.js?v=8b1c4295:475
164
- Promise.then
165
- run @ @tanstack_react-query.js?v=8b1c4295:517
166
- start @ @tanstack_react-query.js?v=8b1c4295:555
167
- fetch @ @tanstack_react-query.js?v=8b1c4295:969
168
- executeFetch_fn @ @tanstack_react-query.js?v=8b1c4295:2280
169
- onSubscribe @ @tanstack_react-query.js?v=8b1c4295:1983
170
- subscribe @ @tanstack_react-query.js?v=8b1c4295:24
171
- (anonymous) @ @tanstack_react-query.js?v=8b1c4295:3147
172
- subscribeToStore @ chunk-276SZO74.js?v=8b1c4295:11984
173
- commitHookEffectListMount @ chunk-276SZO74.js?v=8b1c4295:16915
174
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=8b1c4295:18156
175
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=8b1c4295:18129
176
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=8b1c4295:18119
177
- commitPassiveMountEffects @ chunk-276SZO74.js?v=8b1c4295:18109
178
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=8b1c4295:19490
179
- flushPassiveEffects @ chunk-276SZO74.js?v=8b1c4295:19447
180
- commitRootImpl @ chunk-276SZO74.js?v=8b1c4295:19416
181
- commitRoot @ chunk-276SZO74.js?v=8b1c4295:19277
182
- performSyncWorkOnRoot @ chunk-276SZO74.js?v=8b1c4295:18895
183
- flushSyncCallbacks @ chunk-276SZO74.js?v=8b1c4295:9119
184
- (anonymous) @ chunk-276SZO74.js?v=8b1c4295:18627
185
- setTimeout
186
- defaultScheduler @ @tanstack_react-query.js?v=8b1c4295:565
187
- flush @ @tanstack_react-query.js?v=8b1c4295:589
188
- batch @ @tanstack_react-query.js?v=8b1c4295:607
189
- dispatch_fn @ @tanstack_react-query.js?v=8b1c4295:1040
190
- setData @ @tanstack_react-query.js?v=8b1c4295:718
191
- onSuccess @ @tanstack_react-query.js?v=8b1c4295:940
192
- resolve @ @tanstack_react-query.js?v=8b1c4295:475
193
- Promise.then
194
- run @ @tanstack_react-query.js?v=8b1c4295:517
195
- start @ @tanstack_react-query.js?v=8b1c4295:555
196
- fetch @ @tanstack_react-query.js?v=8b1c4295:969
197
- executeFetch_fn @ @tanstack_react-query.js?v=8b1c4295:2280
198
- onSubscribe @ @tanstack_react-query.js?v=8b1c4295:1983
199
- subscribe @ @tanstack_react-query.js?v=8b1c4295:24
200
- (anonymous) @ @tanstack_react-query.js?v=8b1c4295:3147
201
- subscribeToStore @ chunk-276SZO74.js?v=8b1c4295:11984
202
- commitHookEffectListMount @ chunk-276SZO74.js?v=8b1c4295:16915
203
- commitPassiveMountOnFiber @ chunk-276SZO74.js?v=8b1c4295:18156
204
- commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=8b1c4295:18129
205
- commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=8b1c4295:18119
206
- commitPassiveMountEffects @ chunk-276SZO74.js?v=8b1c4295:18109
207
- flushPassiveEffectsImpl @ chunk-276SZO74.js?v=8b1c4295:19490
208
- flushPassiveEffects @ chunk-276SZO74.js?v=8b1c4295:19447
209
- (anonymous) @ chunk-276SZO74.js?v=8b1c4295:19328
210
- workLoop @ chunk-276SZO74.js?v=8b1c4295:197
211
- flushWork @ chunk-276SZO74.js?v=8b1c4295:176
212
- performWorkUntilDeadline @ chunk-276SZO74.js?v=8b1c4295:384
213
- core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/sales-orders/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 422 (6.74s)
214
- recharts.js?v=8b1c4295:5388 The width(533) and height(300) are both fixed numbers,
215
- maybe you don't need to use a ResponsiveContainer.
216
- warn2 @ recharts.js?v=8b1c4295:5388
217
- (anonymous) @ recharts.js?v=8b1c4295:8559
218
- updateMemo @ chunk-276SZO74.js?v=8b1c4295:12210
219
- useMemo @ chunk-276SZO74.js?v=8b1c4295:12726
220
- useMemo @ chunk-ZMLY2J2T.js?v=8b1c4295:1094
221
- (anonymous) @ recharts.js?v=8b1c4295:8554
222
- renderWithHooks @ chunk-276SZO74.js?v=8b1c4295:11548
223
- updateForwardRef @ chunk-276SZO74.js?v=8b1c4295:14325
224
- beginWork @ chunk-276SZO74.js?v=8b1c4295:15946
225
- beginWork$1 @ chunk-276SZO74.js?v=8b1c4295:19753
226
- performUnitOfWork @ chunk-276SZO74.js?v=8b1c4295:19198
227
- workLoopSync @ chunk-276SZO74.js?v=8b1c4295:19137
228
- renderRootSync @ chunk-276SZO74.js?v=8b1c4295:19116
229
- performConcurrentWorkOnRoot @ chunk-276SZO74.js?v=8b1c4295:18678
230
- workLoop @ chunk-276SZO74.js?v=8b1c4295:197
231
- flushWork @ chunk-276SZO74.js?v=8b1c4295:176
232
- performWorkUntilDeadline @ chunk-276SZO74.js?v=8b1c4295:384
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ chunk-276SZO74.js?v=24003d58:21551 Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
2
  core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
3
+ react-router-dom.js?v=24003d58: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.
4
+ warnOnce @ react-router-dom.js?v=24003d58:4393
5
+ react-router-dom.js?v=24003d58:4393 ⚠️ React Router Future Flag Warning: Relative route resolution within Splat routes is changing in v7. You can use the `v7_relativeSplatPath` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath.
6
+ warnOnce @ react-router-dom.js?v=24003d58:4393
7
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (1.05s)
8
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
9
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles
10
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions
11
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/users?skip=0&limit=100
12
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors
13
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team
14
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations
15
+ core.ts:117 ℹ️ [08:18:49] [COMPONENT] TeamPage: Team page loaded Object
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
17
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
18
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions → 200 (744ms)
19
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
20
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles → 200 (890ms)
21
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
22
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations → 200 (949ms)
23
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
24
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/users?skip=0&limit=100 → 200 (1.01s)
25
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team → 200 (1.10s)
26
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
27
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (1.14s)
28
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors → 200 (1.20s)
29
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
30
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
31
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
32
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
33
+ core.ts:117 ℹ️ [08:19:10] [COMPONENT] AppLauncher: App clicked Object
34
+ core.ts:117 ℹ️ [08:19:10] [COMPONENT] AppLauncher: Navigation decision Object
35
+ core.ts:117 ℹ️ [08:19:10] [COMPONENT] AppLauncher: Navigating to project-scoped route Object
36
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
37
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations/stats
38
+ core.ts:117 ℹ️ [08:19:10] [COMPONENT] InvitationsPage: Invitations page loaded Object
39
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
40
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations/stats → 200 (711ms)
41
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
42
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
43
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
44
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
45
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: Object
46
+ The deferred DOM Node could not be resolved to a valid node.
47
+ InviteUserModal.tsx?t=1763972253137:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}isLoadingRoles: falseprojectId: "0ade6bd1-e492-4e25-b681-59f42058d29a"rolesCount: 2[[Prototype]]: Objectconstructor: ƒ Object()hasOwnProperty: ƒ hasOwnProperty()isPrototypeOf: ƒ isPrototypeOf()propertyIsEnumerable: ƒ propertyIsEnumerable()toLocaleString: ƒ toLocaleString()toString: ƒ toString()valueOf: ƒ valueOf()__defineGetter__: ƒ __defineGetter__()__defineSetter__: ƒ __defineSetter__()__lookupGetter__: ƒ __lookupGetter__()__lookupSetter__: ƒ __lookupSetter__()__proto__: (...)get __proto__: ƒ __proto__()set __proto__: ƒ __proto__()
48
+ InviteUserModal.tsx?t=1763973191648:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
49
+ InviteUserModal.tsx?t=1763972253137:53 InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
50
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles
51
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions
52
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors
53
+ InviteUserModal.tsx?t=1763973191648:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
54
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions → 200 (3.44s)
55
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles → 200 (4.16s)
56
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors → 200 (4.17s)
57
+ client:602 GET http://localhost:8080/src/components/team/ImportUserModal.tsx?t=1763973237149 net::ERR_ABORTED 500 (Internal Server Error)
58
+ importUpdatedModule @ client:602
59
+ fetchUpdate @ client:211
60
+ queueUpdate @ client:186
61
+ (anonymous) @ client:642
62
+ handleMessage @ client:640
63
+ (anonymous) @ client:550
64
+ client:602 GET http://localhost:8080/src/components/team/ImportUserModal.tsx?t=1763973237137 net::ERR_ABORTED 500 (Internal Server Error)
65
+ importUpdatedModule @ client:602
66
+ fetchUpdate @ client:211
67
+ queueUpdate @ client:186
68
+ (anonymous) @ client:642
69
+ handleMessage @ client:640
70
+ (anonymous) @ client:550
71
+ client:176 [hmr] Failed to reload /src/components/team/ImportUserModal.tsx. This could be due to syntax errors or importing non-existent modules. (see errors above)
72
+ warnFailedUpdate @ client:176
73
+ fetchUpdate @ client:213
74
+ await in fetchUpdate
75
+ queueUpdate @ client:186
76
+ (anonymous) @ client:642
77
+ handleMessage @ client:640
78
+ (anonymous) @ client:550
79
+ client:176 [hmr] Failed to reload /src/components/team/ImportUserModal.tsx. This could be due to syntax errors or importing non-existent modules. (see errors above)
80
+ warnFailedUpdate @ client:176
81
+ fetchUpdate @ client:213
82
+ await in fetchUpdate
83
+ queueUpdate @ client:186
84
+ (anonymous) @ client:642
85
+ handleMessage @ client:640
86
+ (anonymous) @ client:550
87
+ InviteUserModal.tsx?t=1763973191648:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
88
+ InviteUserModal.tsx?t=1763973783972:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
89
+ InviteUserModal.tsx?t=1763973191648:53 InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
90
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles
91
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions
92
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors
93
+ InviteUserModal.tsx?t=1763973783972:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
94
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles → 200 (1.05s)
95
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions → 200 (1.17s)
96
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors → 200 (1.18s)
97
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
98
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
99
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
100
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
101
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/users?skip=0&limit=100
102
+ core.ts:167 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team
103
+ core.ts:117 ℹ️ [08:47:38] [COMPONENT] TeamPage: Team page loaded {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentProject: 'Atomio Fttx'}
104
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
105
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/users?skip=0&limit=100 → 200 (1.00s)
106
+ core.ts:167 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team → 200 (1.16s)
107
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
108
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
109
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
110
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
111
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
112
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
113
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
114
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
115
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
116
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
117
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
118
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
119
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
120
+ core.ts:167 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invite
121
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
122
+ project-setup.service.ts:361 POST https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invite 500 (Internal Server Error)
123
+ inviteTeamMember @ project-setup.service.ts:361
124
+ handleSubmit @ InviteUserModal.tsx?t=1763974026761:126
125
+ callCallback2 @ chunk-276SZO74.js?v=24003d58:3674
126
+ invokeGuardedCallbackDev @ chunk-276SZO74.js?v=24003d58:3699
127
+ invokeGuardedCallback @ chunk-276SZO74.js?v=24003d58:3733
128
+ invokeGuardedCallbackAndCatchFirstError @ chunk-276SZO74.js?v=24003d58:3736
129
+ executeDispatch @ chunk-276SZO74.js?v=24003d58:7014
130
+ processDispatchQueueItemsInOrder @ chunk-276SZO74.js?v=24003d58:7034
131
+ processDispatchQueue @ chunk-276SZO74.js?v=24003d58:7043
132
+ dispatchEventsForPlugins @ chunk-276SZO74.js?v=24003d58:7051
133
+ (anonymous) @ chunk-276SZO74.js?v=24003d58:7174
134
+ batchedUpdates$1 @ chunk-276SZO74.js?v=24003d58:18913
135
+ batchedUpdates @ chunk-276SZO74.js?v=24003d58:3579
136
+ dispatchEventForPluginEventSystem @ chunk-276SZO74.js?v=24003d58:7173
137
+ dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay @ chunk-276SZO74.js?v=24003d58:5478
138
+ dispatchEvent @ chunk-276SZO74.js?v=24003d58:5472
139
+ dispatchDiscreteEvent @ chunk-276SZO74.js?v=24003d58:5449
140
+ core.ts:167 POST https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invite → 500 (1.22s)
141
+ InviteUserModal.tsx?t=1763974026761:82 InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
142
+ chunk-276SZO74.js?v=24003d58:521 Warning: Cannot update a component (`ForwardRef`) while rendering a different component (`ForwardRef`). To locate the bad setState() call inside `ForwardRef`, follow the stack trace as described in https://reactjs.org/link/setstate-in-render
143
+ at http://localhost:8080/node_modules/.vite/deps/sonner.js?v=24003d58:269:17
144
+ at Toaster (http://localhost:8080/src/components/ui/sonner.tsx:24:23)
145
+ at Provider (http://localhost:8080/node_modules/.vite/deps/chunk-3RXG37ZK.js?v=24003d58:38:15)
146
+ at TooltipProvider (http://localhost:8080/node_modules/.vite/deps/@radix-ui_react-tooltip.js?v=24003d58:65:5)
147
+ at ThemeProvider (http://localhost:8080/src/contexts/ThemeProvider.tsx:29:33)
148
+ at UserPreferencesProvider (http://localhost:8080/src/contexts/UserPreferencesContext.tsx:28:43)
149
+ at QueryClientProvider (http://localhost:8080/node_modules/.vite/deps/@tanstack_react-query.js?v=24003d58:2934:3)
150
+ at App (http://localhost:8080/src/App.tsx?t=1763972253137:149:35)
151
+ printWarning @ chunk-276SZO74.js?v=24003d58:521
152
+ error @ chunk-276SZO74.js?v=24003d58:505
153
+ warnAboutRenderPhaseUpdatesInDEV @ chunk-276SZO74.js?v=24003d58:19793
154
+ scheduleUpdateOnFiber @ chunk-276SZO74.js?v=24003d58:18546
155
+ dispatchSetState @ chunk-276SZO74.js?v=24003d58:12403
156
+ (anonymous) @ sonner.js?v=24003d58:277
157
+ (anonymous) @ sonner.js?v=24003d58:68
158
+ dismiss @ sonner.js?v=24003d58:68
159
+ (anonymous) @ sonner.js?v=24003d58:272
160
+ basicStateReducer @ chunk-276SZO74.js?v=24003d58:11703
161
+ updateReducer @ chunk-276SZO74.js?v=24003d58:11794
162
+ updateState @ chunk-276SZO74.js?v=24003d58:12021
163
+ useState @ chunk-276SZO74.js?v=24003d58:12753
164
+ useState @ chunk-ZMLY2J2T.js?v=24003d58:1066
165
+ (anonymous) @ sonner.js?v=24003d58:269
166
+ renderWithHooks @ chunk-276SZO74.js?v=24003d58:11548
167
+ updateForwardRef @ chunk-276SZO74.js?v=24003d58:14325
168
+ beginWork @ chunk-276SZO74.js?v=24003d58:15946
169
+ beginWork$1 @ chunk-276SZO74.js?v=24003d58:19753
170
+ performUnitOfWork @ chunk-276SZO74.js?v=24003d58:19198
171
+ workLoopSync @ chunk-276SZO74.js?v=24003d58:19137
172
+ renderRootSync @ chunk-276SZO74.js?v=24003d58:19116
173
+ performConcurrentWorkOnRoot @ chunk-276SZO74.js?v=24003d58:18678
174
+ workLoop @ chunk-276SZO74.js?v=24003d58:197
175
+ flushWork @ chunk-276SZO74.js?v=24003d58:176
176
+ performWorkUntilDeadline @ chunk-276SZO74.js?v=24003d58:384
177
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
178
+ InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
179
+ InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
180
+ InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
181
+ InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
182
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
183
+ InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
184
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
185
+ InviteUserModal fetching roles for: 0ade6bd1-e492-4e25-b681-59f42058d29a
186
+ %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles
187
+ %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions
188
+ %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors
189
+ GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors → 200 (812ms)
190
+ GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions200 (972ms)
191
+ GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles 200 (977ms)
192
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
193
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
194
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
195
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
196
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
197
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
198
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
199
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
200
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
201
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
202
+ %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invite
203
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
204
+ POST https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invite 500 (Internal Server Error)
205
+ inviteTeamMember @ project-setup.servic…t=1763970262902:212
206
+ handleSubmit @ InviteUserModal.tsx?t=1763974687454:138
207
+ callCallback2 @ chunk-276SZO74.js?v=24003d58:3674
208
+ invokeGuardedCallbackDev @ chunk-276SZO74.js?v=24003d58:3699
209
+ invokeGuardedCallback @ chunk-276SZO74.js?v=24003d58:3733
210
+ invokeGuardedCallbackAndCatchFirstError @ chunk-276SZO74.js?v=24003d58:3736
211
+ executeDispatch @ chunk-276SZO74.js?v=24003d58:7014
212
+ processDispatchQueueItemsInOrder @ chunk-276SZO74.js?v=24003d58:7034
213
+ processDispatchQueue @ chunk-276SZO74.js?v=24003d58:7043
214
+ dispatchEventsForPlugins @ chunk-276SZO74.js?v=24003d58:7051
215
+ (anonymous) @ chunk-276SZO74.js?v=24003d58:7174
216
+ batchedUpdates$1 @ chunk-276SZO74.js?v=24003d58:18913
217
+ batchedUpdates @ chunk-276SZO74.js?v=24003d58:3579
218
+ dispatchEventForPluginEventSystem @ chunk-276SZO74.js?v=24003d58:7173
219
+ dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay @ chunk-276SZO74.js?v=24003d58:5478
220
+ dispatchEvent @ chunk-276SZO74.js?v=24003d58:5472
221
+ dispatchDiscreteEvent @ chunk-276SZO74.js?v=24003d58:5449
222
+ POST https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invite → 500 (1.27s)
223
+ InviteUserModal render: {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', rolesCount: 2, isLoadingRoles: false}
docs/devlogs/server/runtimeerror.txt CHANGED
@@ -1,69 +1,558 @@
1
- ===== Application Startup at 2025-11-24 06:59:07 =====
2
 
3
  INFO: Started server process [7]
4
  INFO: Waiting for application startup.
5
- INFO: 2025-11-24T06:59:28 - app.main: ============================================================
6
- INFO: 2025-11-24T06:59:28 - app.main: 🚀 SwiftOps API v1.0.0 | PRODUCTION
7
- INFO: 2025-11-24T06:59:28 - app.main: 📊 Dashboard: Enabled
8
- INFO: 2025-11-24T06:59:28 - app.main: ============================================================
9
- INFO: 2025-11-24T06:59:28 - app.main: 📦 Database:
10
- INFO: 2025-11-24T06:59:28 - app.main: ✓ Connected | 44 tables | 5 users
11
- INFO: 2025-11-24T06:59:28 - app.main: 💾 Cache & Sessions:
12
- INFO: 2025-11-24T06:59:29 - app.services.otp_service: ✅ OTP Service initialized with Redis storage
13
- INFO: 2025-11-24T06:59:30 - app.main: ✓ Redis: Connected
14
- INFO: 2025-11-24T06:59:30 - app.main: 🔌 External Services:
15
- INFO: 2025-11-24T06:59:30 - app.main: ✓ Cloudinary: Connected
16
- INFO: 2025-11-24T06:59:30 - app.main: ✓ Resend: Configured
17
- INFO: 2025-11-24T06:59:30 - app.main: ✓ WASender: Connected
18
- INFO: 2025-11-24T06:59:30 - app.main: ✓ Supabase: Connected | 6 buckets
19
- INFO: 2025-11-24T06:59:30 - app.main: ============================================================
20
- INFO: 2025-11-24T06:59:30 - app.main: ✅ Startup complete | Ready to serve requests
21
- INFO: 2025-11-24T06:59:30 - 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.44.194:24696 - "GET /?logs=container HTTP/1.1" 200 OK
25
- INFO: 2025-11-24T06:59:33 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
26
- INFO: 2025-11-24T06:59:33 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
27
- INFO: 10.16.6.70:20768 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
28
- INFO: 2025-11-24T06:59:33 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
29
- INFO: 2025-11-24T06:59:33 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
30
- INFO: 10.16.44.15:22382 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
31
- INFO: 2025-11-24T06:59:33 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
32
- INFO: 2025-11-24T06:59:33 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
33
- INFO: 10.16.18.108:1124 - "GET /api/v1/projects?page=1&per_page=100 HTTP/1.1" 200 OK
34
- INFO: 10.16.6.70:20768 - "GET /?logs=container HTTP/1.1" 200 OK
35
- INFO: 10.16.6.70:20768 - "GET /?logs=container HTTP/1.1" 200 OK
36
- INFO: 10.16.44.15:22382 - "GET /health HTTP/1.1" 200 OK
37
- INFO: 2025-11-24T06:59:37 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
38
- INFO: 2025-11-24T06:59:37 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
39
- INFO: 2025-11-24T06:59:37 - app.services.audit_service: Audit log created: update on user_preferences by nadina73@nembors.com
40
- INFO: 2025-11-24T06:59:37 - app.api.v1.auth: Preferences updated for user: nadina73@nembors.com
41
- INFO: 10.16.6.70:15600 - "PUT /api/v1/auth/me/preferences HTTP/1.1" 200 OK
42
- INFO: 2025-11-24T06:59:38 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
43
- INFO: 2025-11-24T06:59:38 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
44
- INFO: 10.16.6.70:15600 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
45
- INFO: 2025-11-24T06:59:39 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
46
- INFO: 2025-11-24T06:59:39 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
47
- INFO: 2025-11-24T06:59:39 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user c5cf92be-4172-4fe2-af5c-f05d83b3a938 - building fresh data
48
- INFO: 2025-11-24T06:59:39 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
49
- INFO: 10.16.44.194:25117 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
50
- INFO: 2025-11-24T06:59:39 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
51
- INFO: 2025-11-24T06:59:39 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
52
- INFO: 10.16.18.108:41836 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/activity-feed?limit=20 HTTP/1.1" 200 OK
53
- INFO: 2025-11-24T06:59:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
54
- INFO: 2025-11-24T06:59:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
55
- INFO: 10.16.44.194:25117 - "GET /api/v1/sales-orders/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
56
- INFO: 10.16.44.194:5312 - "GET /health HTTP/1.1" 200 OK
57
- INFO: 10.16.44.194:48396 - "GET /health HTTP/1.1" 200 OK
58
- INFO: 10.16.44.194:31403 - "GET /health HTTP/1.1" 200 OK
59
- INFO: 2025-11-24T07:01:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
60
- INFO: 2025-11-24T07:01:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
61
- INFO: 2025-11-24T07:01:40 - app.services.audit_service: Audit log created: update on user_preferences by nadina73@nembors.com
62
- INFO: 2025-11-24T07:01:40 - app.api.v1.auth: Preferences updated for user: nadina73@nembors.com
63
- INFO: 10.16.6.70:50738 - "PUT /api/v1/auth/me/preferences HTTP/1.1" 200 OK
64
- INFO: 2025-11-24T07:01:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
65
- INFO: 2025-11-24T07:01:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
66
- INFO: 10.16.44.194:34192 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
67
- INFO: 10.16.6.70:51227 - "GET /health HTTP/1.1" 200 OK
68
- INFO: 10.16.6.70:32632 - "GET /health HTTP/1.1" 200 OK
69
- INFO: 10.16.44.15:6012 - "GET /health HTTP/1.1" 200 OK
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ===== Application Startup at 2025-11-24 07:38:50 =====
2
 
3
  INFO: Started server process [7]
4
  INFO: Waiting for application startup.
5
+ INFO: 2025-11-24T07:39:02 - app.main: ============================================================
6
+ INFO: 2025-11-24T07:39:02 - app.main: 🚀 SwiftOps API v1.0.0 | PRODUCTION
7
+ INFO: 2025-11-24T07:39:02 - app.main: 📊 Dashboard: Enabled
8
+ INFO: 2025-11-24T07:39:02 - app.main: ============================================================
9
+ INFO: 2025-11-24T07:39:02 - app.main: 📦 Database:
10
+ INFO: 2025-11-24T07:39:02 - app.main: ✓ Connected | 44 tables | 5 users
11
+ INFO: 2025-11-24T07:39:02 - app.main: 💾 Cache & Sessions:
12
+ INFO: 2025-11-24T07:39:03 - app.services.otp_service: ✅ OTP Service initialized with Redis storage
13
+ INFO: 2025-11-24T07:39:04 - app.main: ✓ Redis: Connected
14
+ INFO: 2025-11-24T07:39:04 - app.main: 🔌 External Services:
15
+ INFO: 2025-11-24T07:39:04 - app.main: ✓ Cloudinary: Connected
16
+ INFO: 2025-11-24T07:39:04 - app.main: ✓ Resend: Configured
17
+ INFO: 2025-11-24T07:39:04 - app.main: ✓ WASender: Connected
18
+ INFO: 2025-11-24T07:39:04 - app.main: ✓ Supabase: Connected | 6 buckets
19
+ INFO: 2025-11-24T07:39:04 - app.main: ============================================================
20
+ INFO: 2025-11-24T07:39:04 - app.main: ✅ Startup complete | Ready to serve requests
21
+ INFO: 2025-11-24T07:39: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.30.104:35389 - "GET /health HTTP/1.1" 200 OK
25
+ INFO: 10.16.30.104:47145 - "GET /health HTTP/1.1" 200 OK
26
+ INFO: 10.16.13.17:44717 - "GET /health HTTP/1.1" 200 OK
27
+ INFO: 10.16.30.104:43954 - "GET /health HTTP/1.1" 200 OK
28
+ INFO: 10.16.6.70:41515 - "GET /health HTTP/1.1" 200 OK
29
+ INFO: 10.16.30.104:42373 - "GET / HTTP/1.1" 200 OK
30
+ INFO: 10.16.13.17:37883 - "GET /health HTTP/1.1" 200 OK
31
+ INFO: 10.16.13.17:43226 - "GET /health HTTP/1.1" 200 OK
32
+ INFO: 10.16.6.70:4493 - "GET /health HTTP/1.1" 200 OK
33
+ INFO: 10.16.30.104:15047 - "GET /health HTTP/1.1" 200 OK
34
+ INFO: 10.16.30.104:7341 - "GET /health HTTP/1.1" 200 OK
35
+ INFO: 10.16.13.17:64655 - "GET /health HTTP/1.1" 200 OK
36
+ INFO: 10.16.30.104:46857 - "GET /health HTTP/1.1" 200 OK
37
+ INFO: 10.16.13.17:57986 - "GET /health HTTP/1.1" 200 OK
38
+ INFO: 10.16.13.17:9777 - "GET /health HTTP/1.1" 200 OK
39
+ INFO: 2025-11-24T07:48:18 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
40
+ INFO: 2025-11-24T07:48:18 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
41
+ INFO: 10.16.30.104:1329 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
42
+ INFO: 2025-11-24T07:48:19 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
43
+ INFO: 2025-11-24T07:48:19 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
44
+ INFO: 2025-11-24T07:48:19 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user c5cf92be-4172-4fe2-af5c-f05d83b3a938 - building fresh data
45
+ INFO: 2025-11-24T07:48:20 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
46
+ INFO: 10.16.30.104:1329 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
47
+ INFO: 2025-11-24T07:48:20 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
48
+ INFO: 2025-11-24T07:48:20 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
49
+ INFO: 10.16.13.17:9777 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
50
+ INFO: 2025-11-24T07:48:20 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
51
+ INFO: 2025-11-24T07:48:20 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
52
+ INFO: 10.16.6.70:1872 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/activity-feed?limit=20 HTTP/1.1" 200 OK
53
+ INFO: 2025-11-24T07:48:20 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
54
+ INFO: 2025-11-24T07:48:20 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
55
+ INFO: 10.16.30.104:9961 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
56
+ INFO: 2025-11-24T07:48:20 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
57
+ INFO: 2025-11-24T07:48:20 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
58
+ INFO: 10.16.6.70:1872 - "GET /api/v1/sales-orders/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
59
+ INFO: 2025-11-24T07:48:26 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
60
+ INFO: 2025-11-24T07:48:26 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
61
+ INFO: 10.16.30.104:32841 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations HTTP/1.1" 200 OK
62
+ INFO: 2025-11-24T07:48:26 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
63
+ INFO: 2025-11-24T07:48:26 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
64
+ INFO: 10.16.13.17:50885 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations/stats HTTP/1.1" 200 OK
65
+ INFO: 2025-11-24T07:48:35 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
66
+ INFO: 2025-11-24T07:48:35 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
67
+ INFO: 10.16.6.70:1094 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
68
+ INFO: 2025-11-24T07:48:35 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
69
+ INFO: 2025-11-24T07:48:35 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
70
+ INFO: 10.16.13.17:59195 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
71
+ INFO: 2025-11-24T07:48:36 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
72
+ INFO: 2025-11-24T07:48:36 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
73
+ INFO: 10.16.6.70:15230 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
74
+ INFO: 2025-11-24T07:52:14 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
75
+ INFO: 2025-11-24T07:52:14 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
76
+ INFO: 10.16.30.104:13386 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
77
+ INFO: 10.16.30.104:51494 - "GET /health HTTP/1.1" 200 OK
78
+ INFO: 2025-11-24T07:52:14 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
79
+ INFO: 2025-11-24T07:52:14 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
80
+ INFO: 10.16.13.17:8320 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
81
+ INFO: 10.16.6.70:59633 - "GET /health HTTP/1.1" 200 OK
82
+ INFO: 10.16.6.70:31257 - "GET /health HTTP/1.1" 200 OK
83
+ INFO: 10.16.30.104:51717 - "GET /health HTTP/1.1" 200 OK
84
+ INFO: 10.16.13.17:5061 - "GET /health HTTP/1.1" 200 OK
85
+ INFO: 2025-11-24T07:53:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
86
+ INFO: 2025-11-24T07:53:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
87
+ INFO: 10.16.30.104:31014 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
88
+ INFO: 2025-11-24T07:53:51 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
89
+ INFO: 2025-11-24T07:53:51 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
90
+ INFO: 10.16.30.104:31014 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations/stats HTTP/1.1" 200 OK
91
+ INFO: 2025-11-24T07:53:51 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
92
+ INFO: 2025-11-24T07:53:51 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
93
+ INFO: 10.16.30.104:5373 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations HTTP/1.1" 200 OK
94
+ INFO: 2025-11-24T07:53:51 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
95
+ INFO: 2025-11-24T07:53:51 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
96
+ INFO: 10.16.13.17:5061 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
97
+ INFO: 2025-11-24T07:53:51 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
98
+ INFO: 2025-11-24T07:53:51 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
99
+ INFO: 10.16.13.17:12585 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
100
+ INFO: 2025-11-24T07:53:53 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
101
+ INFO: 2025-11-24T07:53:53 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
102
+ INFO: 10.16.30.104:31014 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
103
+ INFO: 2025-11-24T07:53:53 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
104
+ INFO: 2025-11-24T07:53:53 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
105
+ INFO: 10.16.30.104:55818 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
106
+ INFO: 2025-11-24T07:53:53 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
107
+ INFO: 2025-11-24T07:53:53 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
108
+ INFO: 10.16.30.104:5373 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
109
+ INFO: 10.16.30.104:63013 - "GET /health HTTP/1.1" 200 OK
110
+ INFO: 10.16.13.17:10922 - "GET /health HTTP/1.1" 200 OK
111
+ INFO: 10.16.30.104:53569 - "GET /health HTTP/1.1" 200 OK
112
+ INFO: 10.16.30.104:38918 - "GET /health HTTP/1.1" 200 OK
113
+ INFO: 10.16.30.104:45795 - "GET /health HTTP/1.1" 200 OK
114
+ INFO: 2025-11-24T07:57:43 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
115
+ INFO: 2025-11-24T07:57:43 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
116
+ INFO: 10.16.13.17:30909 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
117
+ INFO: 10.16.30.104:16437 - "GET /health HTTP/1.1" 200 OK
118
+ INFO: 2025-11-24T07:57:44 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
119
+ INFO: 2025-11-24T07:57:44 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
120
+ INFO: 10.16.13.17:30909 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations/stats HTTP/1.1" 200 OK
121
+ INFO: 2025-11-24T07:57:44 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
122
+ INFO: 2025-11-24T07:57:44 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
123
+ INFO: 10.16.30.104:16437 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
124
+ INFO: 2025-11-24T07:57:44 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
125
+ INFO: 2025-11-24T07:57:44 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
126
+ INFO: 10.16.6.70:2031 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
127
+ INFO: 2025-11-24T07:57:44 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
128
+ INFO: 2025-11-24T07:57:44 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
129
+ INFO: 10.16.30.104:14984 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations HTTP/1.1" 200 OK
130
+ INFO: 2025-11-24T07:57:45 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
131
+ INFO: 2025-11-24T07:57:45 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
132
+ INFO: 10.16.30.104:14984 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
133
+ INFO: 2025-11-24T07:57:45 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
134
+ INFO: 2025-11-24T07:57:45 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
135
+ INFO: 10.16.30.104:20006 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
136
+ INFO: 2025-11-24T07:57:45 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
137
+ INFO: 2025-11-24T07:57:45 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
138
+ INFO: 10.16.13.17:30909 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
139
+ INFO: 10.16.30.104:19914 - "GET /health HTTP/1.1" 200 OK
140
+ INFO: 10.16.30.104:13166 - "GET /health HTTP/1.1" 200 OK
141
+ INFO: 10.16.30.104:17708 - "GET /health HTTP/1.1" 200 OK
142
+ INFO: 10.16.6.70:30878 - "GET /health HTTP/1.1" 200 OK
143
+ INFO: 10.16.30.104:40752 - "GET /health HTTP/1.1" 200 OK
144
+ INFO: 10.16.30.104:47424 - "GET /health HTTP/1.1" 200 OK
145
+ INFO: 10.16.6.70:41213 - "GET /health HTTP/1.1" 200 OK
146
+ INFO: 2025-11-24T08:02:56 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
147
+ INFO: 2025-11-24T08:02:56 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
148
+ INFO: 10.16.30.104:46731 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
149
+ INFO: 2025-11-24T08:02:56 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
150
+ INFO: 2025-11-24T08:02:56 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
151
+ INFO: 10.16.30.104:24577 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
152
+ INFO: 10.16.6.70:29407 - "GET /health HTTP/1.1" 200 OK
153
+ INFO: 10.16.30.104:1507 - "GET /health HTTP/1.1" 200 OK
154
+ INFO: 10.16.30.104:62816 - "GET /health HTTP/1.1" 200 OK
155
+ INFO: 2025-11-24T08:04:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
156
+ INFO: 2025-11-24T08:04:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
157
+ INFO: 10.16.6.70:62508 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
158
+ INFO: 2025-11-24T08:04:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
159
+ INFO: 2025-11-24T08:04:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
160
+ INFO: 10.16.6.70:62508 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
161
+ INFO: 2025-11-24T08:04:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
162
+ INFO: 2025-11-24T08:04:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
163
+ INFO: 10.16.30.104:63923 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
164
+ INFO: 2025-11-24T08:04:17 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
165
+ INFO: 2025-11-24T08:04:17 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
166
+ INFO: 10.16.30.104:63923 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations/stats HTTP/1.1" 200 OK
167
+ INFO: 2025-11-24T08:04:17 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
168
+ INFO: 2025-11-24T08:04:17 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
169
+ INFO: 10.16.6.70:38211 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations HTTP/1.1" 200 OK
170
+ INFO: 2025-11-24T08:04:18 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
171
+ INFO: 2025-11-24T08:04:18 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
172
+ INFO: 10.16.30.104:63923 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
173
+ INFO: 2025-11-24T08:04:18 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
174
+ INFO: 2025-11-24T08:04:18 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
175
+ INFO: 10.16.6.70:38211 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
176
+ INFO: 2025-11-24T08:04:18 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
177
+ INFO: 2025-11-24T08:04:18 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
178
+ INFO: 10.16.6.70:62508 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
179
+ INFO: 10.16.30.104:64623 - "GET /health HTTP/1.1" 200 OK
180
+ INFO: 10.16.6.70:1177 - "GET /health HTTP/1.1" 200 OK
181
+ INFO: 10.16.6.70:62671 - "GET /health HTTP/1.1" 200 OK
182
+ INFO: 10.16.6.70:21790 - "GET /health HTTP/1.1" 200 OK
183
+ INFO: 10.16.6.70:29800 - "GET /health HTTP/1.1" 200 OK
184
+ INFO: 10.16.30.104:7240 - "GET /health HTTP/1.1" 200 OK
185
+ INFO: 10.16.6.70:58287 - "GET /health HTTP/1.1" 200 OK
186
+ INFO: 2025-11-24T08:08:11 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
187
+ INFO: 2025-11-24T08:08:11 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
188
+ INFO: 10.16.6.70:5418 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
189
+ INFO: 2025-11-24T08:08:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
190
+ INFO: 2025-11-24T08:08:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
191
+ INFO: 10.16.6.70:13336 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
192
+ INFO: 2025-11-24T08:08:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
193
+ INFO: 2025-11-24T08:08:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
194
+ INFO: 10.16.30.104:44437 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
195
+ INFO: 2025-11-24T08:08:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
196
+ INFO: 2025-11-24T08:08:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
197
+ INFO: 10.16.6.70:38435 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations HTTP/1.1" 200 OK
198
+ INFO: 2025-11-24T08:08:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
199
+ INFO: 2025-11-24T08:08:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
200
+ INFO: 10.16.6.70:3469 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
201
+ INFO: 2025-11-24T08:08:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
202
+ INFO: 2025-11-24T08:08:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
203
+ INFO: 10.16.6.70:51274 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
204
+ INFO: 2025-11-24T08:08:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
205
+ INFO: 2025-11-24T08:08:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
206
+ INFO: 10.16.6.70:26290 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
207
+ INFO: 2025-11-24T08:08:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
208
+ INFO: 2025-11-24T08:08:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
209
+ INFO: 10.16.6.70:60924 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations/stats HTTP/1.1" 200 OK
210
+ INFO: 10.16.6.70:60924 - "GET /health HTTP/1.1" 200 OK
211
+ INFO: 2025-11-24T08:08:37 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
212
+ INFO: 2025-11-24T08:08:37 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
213
+ INFO: 10.16.30.104:34650 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
214
+ INFO: 10.16.6.70:22994 - "GET /health HTTP/1.1" 200 OK
215
+ INFO: 2025-11-24T08:08:38 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
216
+ INFO: 2025-11-24T08:08:38 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
217
+ INFO: 10.16.6.70:22994 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
218
+ INFO: 2025-11-24T08:08:38 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
219
+ INFO: 2025-11-24T08:08:38 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
220
+ INFO: 10.16.30.104:34650 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
221
+ INFO: 2025-11-24T08:08:38 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
222
+ INFO: 2025-11-24T08:08:38 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
223
+ INFO: 10.16.6.70:61269 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
224
+ INFO: 2025-11-24T08:08:38 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
225
+ INFO: 2025-11-24T08:08:38 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
226
+ INFO: 10.16.30.104:61933 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
227
+ INFO: 2025-11-24T08:08:38 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
228
+ INFO: 2025-11-24T08:08:38 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
229
+ INFO: 10.16.30.104:53121 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
230
+ INFO: 2025-11-24T08:08:39 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
231
+ INFO: 2025-11-24T08:08:39 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
232
+ INFO: 10.16.30.104:53121 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 200 OK
233
+ INFO: 2025-11-24T08:08:39 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
234
+ INFO: 2025-11-24T08:08:39 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
235
+ INFO: 10.16.6.70:22994 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
236
+ INFO: 2025-11-24T08:08:49 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
237
+ INFO: 2025-11-24T08:08:49 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
238
+ INFO: 10.16.30.104:7314 - "GET /api/v1/users?skip=0&limit=100 HTTP/1.1" 200 OK
239
+ INFO: 10.16.6.70:39845 - "GET /health HTTP/1.1" 200 OK
240
+ INFO: 10.16.6.70:33139 - "GET /health HTTP/1.1" 200 OK
241
+ INFO: 10.16.30.104:5538 - "GET /health HTTP/1.1" 200 OK
242
+ INFO: 10.16.30.104:30772 - "GET /health HTTP/1.1" 200 OK
243
+ INFO: 10.16.6.70:51707 - "GET /health HTTP/1.1" 200 OK
244
+ INFO: 10.16.6.70:27658 - "GET /health HTTP/1.1" 200 OK
245
+ INFO: 10.16.30.104:16072 - "GET /health HTTP/1.1" 200 OK
246
+ INFO: 10.16.6.70:18413 - "GET /health HTTP/1.1" 200 OK
247
+ INFO: 10.16.30.104:58137 - "GET /health HTTP/1.1" 200 OK
248
+ INFO: 10.16.30.104:6174 - "GET /health HTTP/1.1" 200 OK
249
+ INFO: 10.16.30.104:63841 - "GET /health HTTP/1.1" 200 OK
250
+ INFO: 10.16.6.70:14136 - "GET /health HTTP/1.1" 200 OK
251
+ INFO: 10.16.30.104:3265 - "GET /health HTTP/1.1" 200 OK
252
+ INFO: 10.16.30.104:32972 - "GET /health HTTP/1.1" 200 OK
253
+ INFO: 2025-11-24T08:18:49 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
254
+ INFO: 2025-11-24T08:18:49 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
255
+ INFO: 10.16.6.70:35356 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
256
+ INFO: 2025-11-24T08:18:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
257
+ INFO: 2025-11-24T08:18:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
258
+ INFO: 10.16.6.70:35356 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
259
+ INFO: 2025-11-24T08:18:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
260
+ INFO: 2025-11-24T08:18:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
261
+ INFO: 10.16.30.104:32972 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
262
+ INFO: 2025-11-24T08:18:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
263
+ INFO: 2025-11-24T08:18:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
264
+ INFO: 10.16.30.104:56860 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
265
+ INFO: 2025-11-24T08:18:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
266
+ INFO: 2025-11-24T08:18:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
267
+ INFO: 10.16.6.70:54694 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations HTTP/1.1" 200 OK
268
+ INFO: 2025-11-24T08:18:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
269
+ INFO: 2025-11-24T08:18:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
270
+ INFO: 10.16.6.70:37836 - "GET /api/v1/users?skip=0&limit=100 HTTP/1.1" 200 OK
271
+ INFO: 2025-11-24T08:18:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
272
+ INFO: 2025-11-24T08:18:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
273
+ INFO: 10.16.30.104:23158 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 200 OK
274
+ INFO: 2025-11-24T08:18:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
275
+ INFO: 2025-11-24T08:18:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
276
+ INFO: 10.16.30.104:20280 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
277
+ INFO: 2025-11-24T08:18:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
278
+ INFO: 2025-11-24T08:18:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
279
+ INFO: 10.16.30.104:54519 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
280
+ INFO: 2025-11-24T08:19:10 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
281
+ INFO: 2025-11-24T08:19:10 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
282
+ INFO: 10.16.30.104:16164 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invitations/stats HTTP/1.1" 200 OK
283
+ INFO: 10.16.30.104:36031 - "GET /health HTTP/1.1" 200 OK
284
+ INFO: 10.16.30.104:22387 - "GET /health HTTP/1.1" 200 OK
285
+ INFO: 10.16.30.104:3146 - "GET /health HTTP/1.1" 200 OK
286
+ INFO: 10.16.10.8:31167 - "GET /health HTTP/1.1" 200 OK
287
+ INFO: 10.16.30.104:65489 - "GET /health HTTP/1.1" 200 OK
288
+ INFO: 10.16.8.187:10974 - "GET /health HTTP/1.1" 200 OK
289
+ INFO: 10.16.6.70:26881 - "GET /health HTTP/1.1" 200 OK
290
+ INFO: 2025-11-24T08:22:32 - app.core.supabase_auth: Session refreshed successfully
291
+ INFO: 2025-11-24T08:22:32 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
292
+ INFO: 10.16.18.114:18497 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
293
+ INFO: 2025-11-24T08:22:32 - app.core.supabase_auth: Session refreshed successfully
294
+ INFO: 2025-11-24T08:22:32 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
295
+ INFO: 10.16.18.114:53425 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
296
+ INFO: 10.16.30.104:65318 - "GET /health HTTP/1.1" 200 OK
297
+ INFO: 10.16.10.8:3583 - "GET /health HTTP/1.1" 200 OK
298
+ INFO: 10.16.18.114:4173 - "GET /health HTTP/1.1" 200 OK
299
+ INFO: 10.16.8.187:39093 - "GET /health HTTP/1.1" 200 OK
300
+ INFO: 10.16.10.8:24637 - "GET /health HTTP/1.1" 200 OK
301
+ INFO: 10.16.18.114:32953 - "GET /health HTTP/1.1" 200 OK
302
+ INFO: 2025-11-24T08:23:39 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
303
+ INFO: 2025-11-24T08:23:39 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
304
+ INFO: 10.16.10.8:49423 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
305
+ INFO: 2025-11-24T08:23:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
306
+ INFO: 2025-11-24T08:23:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
307
+ INFO: 10.16.10.8:49423 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
308
+ INFO: 2025-11-24T08:23:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
309
+ INFO: 2025-11-24T08:23:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
310
+ INFO: 10.16.18.114:32953 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
311
+ INFO: 2025-11-24T08:23:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
312
+ INFO: 2025-11-24T08:23:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
313
+ INFO: 10.16.8.187:51459 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
314
+ INFO: 2025-11-24T08:23:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
315
+ INFO: 2025-11-24T08:23:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
316
+ INFO: 10.16.10.8:61685 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 200 OK
317
+ INFO: 2025-11-24T08:23:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
318
+ INFO: 2025-11-24T08:23:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
319
+ INFO: 10.16.18.114:59853 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
320
+ INFO: 2025-11-24T08:23:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
321
+ INFO: 2025-11-24T08:23:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
322
+ INFO: 10.16.33.56:19068 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
323
+ INFO: 2025-11-24T08:23:40 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
324
+ INFO: 2025-11-24T08:23:40 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
325
+ INFO: 10.16.33.56:64626 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
326
+ INFO: 2025-11-24T08:23:43 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
327
+ INFO: 2025-11-24T08:23:43 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
328
+ INFO: 10.16.10.8:9298 - "GET /api/v1/users?skip=0&limit=100 HTTP/1.1" 200 OK
329
+ INFO: 10.16.18.114:28151 - "GET /health HTTP/1.1" 200 OK
330
+ INFO: 10.16.8.187:60764 - "GET /health HTTP/1.1" 200 OK
331
+ INFO: 10.16.8.187:41221 - "GET /health HTTP/1.1" 200 OK
332
+ INFO: 10.16.33.56:20500 - "GET /health HTTP/1.1" 200 OK
333
+ INFO: 10.16.18.114:56632 - "GET /health HTTP/1.1" 200 OK
334
+ INFO: 10.16.33.56:41646 - "GET /health HTTP/1.1" 200 OK
335
+ INFO: 10.16.10.8:11531 - "GET /health HTTP/1.1" 200 OK
336
+ INFO: 10.16.18.114:45310 - "GET /health HTTP/1.1" 200 OK
337
+ INFO: 10.16.33.56:38650 - "GET /health HTTP/1.1" 200 OK
338
+ INFO: 10.16.33.56:50075 - "GET /health HTTP/1.1" 200 OK
339
+ INFO: 10.16.10.8:57114 - "GET /health HTTP/1.1" 200 OK
340
+ INFO: 10.16.18.114:13053 - "GET /health HTTP/1.1" 200 OK
341
+ INFO: 10.16.33.56:57252 - "GET /health HTTP/1.1" 200 OK
342
+ INFO: 10.16.10.8:52580 - "GET /health HTTP/1.1" 200 OK
343
+ INFO: 10.16.18.114:52729 - "GET /health HTTP/1.1" 200 OK
344
+ INFO: 10.16.10.8:32916 - "GET /health HTTP/1.1" 200 OK
345
+ INFO: 10.16.33.56:12620 - "GET /health HTTP/1.1" 200 OK
346
+ INFO: 10.16.33.56:11663 - "GET /health HTTP/1.1" 200 OK
347
+ INFO: 10.16.10.8:17286 - "GET /health HTTP/1.1" 200 OK
348
+ INFO: 10.16.10.8:10577 - "GET /health HTTP/1.1" 200 OK
349
+ INFO: 10.16.18.114:3379 - "GET /health HTTP/1.1" 200 OK
350
+ INFO: 2025-11-24T08:33:34 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
351
+ INFO: 2025-11-24T08:33:34 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
352
+ INFO: 10.16.33.56:37147 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
353
+ INFO: 2025-11-24T08:33:34 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
354
+ INFO: 2025-11-24T08:33:34 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
355
+ INFO: 10.16.10.8:12659 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
356
+ INFO: 2025-11-24T08:33:35 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
357
+ INFO: 2025-11-24T08:33:35 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
358
+ INFO: 10.16.18.114:47405 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
359
+ INFO: 10.16.18.114:52004 - "GET /health HTTP/1.1" 200 OK
360
+ INFO: 10.16.18.114:48365 - "GET /health HTTP/1.1" 200 OK
361
+ INFO: 10.16.33.56:23812 - "GET /health HTTP/1.1" 200 OK
362
+ INFO: 10.16.44.194:51733 - "GET /health HTTP/1.1" 200 OK
363
+ INFO: 10.16.10.8:21071 - "GET /health HTTP/1.1" 200 OK
364
+ INFO: 10.16.44.194:23601 - "GET /health HTTP/1.1" 200 OK
365
+ INFO: 10.16.44.194:56043 - "GET /health HTTP/1.1" 200 OK
366
+ INFO: 10.16.18.114:3269 - "GET /health HTTP/1.1" 200 OK
367
+ INFO: 10.16.18.114:41671 - "GET /health HTTP/1.1" 200 OK
368
+ INFO: 10.16.33.56:51738 - "GET /health HTTP/1.1" 200 OK
369
+ INFO: 10.16.10.8:19386 - "GET /health HTTP/1.1" 200 OK
370
+ INFO: 10.16.18.114:60492 - "GET /health HTTP/1.1" 200 OK
371
+ INFO: 10.16.18.114:26405 - "GET /health HTTP/1.1" 200 OK
372
+ INFO: 10.16.44.194:23929 - "GET /health HTTP/1.1" 200 OK
373
+ INFO: 10.16.10.8:43706 - "GET /health HTTP/1.1" 200 OK
374
+ INFO: 10.16.10.8:52723 - "GET /health HTTP/1.1" 200 OK
375
+ INFO: 10.16.18.114:37308 - "GET /health HTTP/1.1" 200 OK
376
+ INFO: 10.16.18.114:26075 - "GET /health HTTP/1.1" 200 OK
377
+ INFO: 10.16.33.56:25074 - "GET /health HTTP/1.1" 200 OK
378
+ INFO: 10.16.10.8:24500 - "GET /health HTTP/1.1" 200 OK
379
+ INFO: 10.16.10.8:6859 - "GET /health HTTP/1.1" 200 OK
380
+ INFO: 10.16.33.56:31106 - "GET /health HTTP/1.1" 200 OK
381
+ INFO: 10.16.10.8:26346 - "GET /health HTTP/1.1" 200 OK
382
+ INFO: 10.16.10.8:33791 - "GET /health HTTP/1.1" 200 OK
383
+ INFO: 10.16.33.56:18722 - "GET /health HTTP/1.1" 200 OK
384
+ INFO: 10.16.10.8:64063 - "GET /health HTTP/1.1" 200 OK
385
+ INFO: 2025-11-24T08:43:11 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
386
+ INFO: 2025-11-24T08:43:11 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
387
+ INFO: 10.16.18.114:41139 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
388
+ INFO: 2025-11-24T08:43:11 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
389
+ INFO: 2025-11-24T08:43:11 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
390
+ INFO: 10.16.18.114:3140 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
391
+ INFO: 2025-11-24T08:43:11 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
392
+ INFO: 2025-11-24T08:43:11 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
393
+ INFO: 10.16.33.56:10601 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
394
+ INFO: 10.16.18.114:33993 - "GET /health HTTP/1.1" 200 OK
395
+ INFO: 10.16.10.8:40110 - "GET /health HTTP/1.1" 200 OK
396
+ INFO: 10.16.33.56:11647 - "GET /health HTTP/1.1" 200 OK
397
+ INFO: 10.16.10.8:23786 - "GET /health HTTP/1.1" 200 OK
398
+ INFO: 10.16.10.8:23786 - "GET /health HTTP/1.1" 200 OK
399
+ INFO: 10.16.10.8:23786 - "GET /health HTTP/1.1" 200 OK
400
+ INFO: 10.16.10.8:8477 - "GET /health HTTP/1.1" 200 OK
401
+ INFO: 10.16.10.8:23869 - "GET /health HTTP/1.1" 200 OK
402
+ INFO: 10.16.18.114:35662 - "GET /health HTTP/1.1" 200 OK
403
+ INFO: 10.16.33.56:12180 - "GET /health HTTP/1.1" 200 OK
404
+ INFO: 10.16.18.114:62966 - "GET /health HTTP/1.1" 200 OK
405
+ INFO: 10.16.33.56:49826 - "GET /health HTTP/1.1" 200 OK
406
+ INFO: 2025-11-24T08:47:38 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
407
+ INFO: 2025-11-24T08:47:38 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
408
+ INFO: 10.16.44.194:40707 - "GET /api/v1/users?skip=0&limit=100 HTTP/1.1" 200 OK
409
+ INFO: 2025-11-24T08:47:38 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
410
+ INFO: 2025-11-24T08:47:38 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
411
+ INFO: 10.16.44.194:54771 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 200 OK
412
+ INFO: 10.16.10.8:13213 - "GET /health HTTP/1.1" 200 OK
413
+ INFO: 10.16.10.8:41046 - "GET /health HTTP/1.1" 200 OK
414
+ INFO: 10.16.44.194:39809 - "GET /health HTTP/1.1" 200 OK
415
+ INFO: 10.16.10.8:15886 - "GET /health HTTP/1.1" 200 OK
416
+ INFO: 10.16.18.114:61292 - "GET /health HTTP/1.1" 200 OK
417
+ INFO: 2025-11-24T08:49:37 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
418
+ INFO: 2025-11-24T08:49:37 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
419
+ INFO: 10.16.33.56:52619 - "POST /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invite HTTP/1.1" 500 Internal Server Error
420
+ ERROR: Exception in ASGI application
421
+ Traceback (most recent call last):
422
+ File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
423
+ result = await app( # type: ignore[func-returns-value]
424
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
425
+ File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
426
+ return await self.app(scope, receive, send)
427
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
428
+ File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1106, in __call__
429
+ await super().__call__(scope, receive, send)
430
+ File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 122, in __call__
431
+ await self.middleware_stack(scope, receive, send)
432
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 184, in __call__
433
+ raise exc
434
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 162, in __call__
435
+ await self.app(scope, receive, _send)
436
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 91, in __call__
437
+ await self.simple_response(scope, receive, send, request_headers=headers)
438
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 146, in simple_response
439
+ await self.app(scope, receive, send)
440
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
441
+ raise exc
442
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
443
+ await self.app(scope, receive, sender)
444
+ File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
445
+ raise e
446
+ File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
447
+ await self.app(scope, receive, send)
448
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 718, in __call__
449
+ await route.handle(scope, receive, send)
450
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
451
+ await self.app(scope, receive, send)
452
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 66, in app
453
+ response = await func(request)
454
+ ^^^^^^^^^^^^^^^^^^^
455
+ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 274, in app
456
+ raw_response = await run_endpoint_function(
457
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
458
+ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
459
+ return await dependant.call(**values)
460
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
461
+ File "/app/src/app/api/v1/projects.py", line 1135, in invite_to_project_team
462
+ full_invitation = InvitationCreate(
463
+ ^^^^^^^^^^^^^^^^^
464
+ File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 164, in __init__
465
+ __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)
466
+ pydantic_core._pydantic_core.ValidationError: 1 validation error for InvitationCreate
467
+ contractor_id
468
+ Value error, User cannot be linked to both client and contractor [type=value_error, input_value=UUID('1af9fb24-e5bb-40ac-a748-0997580b4c32'), input_type=UUID]
469
+ For further information visit https://errors.pydantic.dev/2.5/v/value_error
470
+ INFO: 10.16.44.194:48601 - "GET /health HTTP/1.1" 200 OK
471
+ INFO: 10.16.44.194:5271 - "GET /health HTTP/1.1" 200 OK
472
+ INFO: 10.16.33.56:42535 - "GET /health HTTP/1.1" 200 OK
473
+ INFO: 10.16.33.56:61475 - "GET /health HTTP/1.1" 200 OK
474
+ INFO: 10.16.10.8:2207 - "GET /health HTTP/1.1" 200 OK
475
+ INFO: 10.16.33.56:12960 - "GET /health HTTP/1.1" 200 OK
476
+ INFO: 10.16.18.114:50729 - "GET /health HTTP/1.1" 200 OK
477
+ INFO: 10.16.44.194:10144 - "GET /health HTTP/1.1" 200 OK
478
+ INFO: 10.16.44.194:55362 - "GET /health HTTP/1.1" 200 OK
479
+ INFO: 10.16.10.8:17713 - "GET /health HTTP/1.1" 200 OK
480
+ INFO: 10.16.10.8:58500 - "GET /health HTTP/1.1" 200 OK
481
+ INFO: 10.16.44.194:5098 - "GET /health HTTP/1.1" 200 OK
482
+ INFO: 10.16.10.8:61548 - "GET /health HTTP/1.1" 200 OK
483
+ INFO: 10.16.33.56:55355 - "GET /health HTTP/1.1" 200 OK
484
+ INFO: 10.16.33.56:56050 - "GET /health HTTP/1.1" 200 OK
485
+ INFO: 10.16.10.8:24222 - "GET /health HTTP/1.1" 200 OK
486
+ INFO: 10.16.44.194:54370 - "GET /health HTTP/1.1" 200 OK
487
+ INFO: 10.16.18.114:20179 - "GET /health HTTP/1.1" 200 OK
488
+ INFO: 10.16.10.8:1874 - "GET /health HTTP/1.1" 200 OK
489
+ INFO: 10.16.18.114:36547 - "GET /health HTTP/1.1" 200 OK
490
+ INFO: 10.16.44.194:28259 - "GET /health HTTP/1.1" 200 OK
491
+ INFO: 2025-11-24T08:58:10 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
492
+ INFO: 2025-11-24T08:58:10 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
493
+ INFO: 10.16.44.194:28259 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/subcontractors HTTP/1.1" 200 OK
494
+ INFO: 2025-11-24T08:58:10 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
495
+ INFO: 2025-11-24T08:58:10 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
496
+ INFO: 10.16.33.56:29859 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/project-roles HTTP/1.1" 200 OK
497
+ INFO: 2025-11-24T08:58:10 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
498
+ INFO: 2025-11-24T08:58:10 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
499
+ INFO: 10.16.33.56:19602 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
500
+ INFO: 10.16.18.114:49980 - "GET /health HTTP/1.1" 200 OK
501
+ INFO: 10.16.10.8:51585 - "GET /health HTTP/1.1" 200 OK
502
+ INFO: 10.16.44.194:40190 - "GET /health HTTP/1.1" 200 OK
503
+ INFO: 10.16.10.8:41078 - "GET /health HTTP/1.1" 200 OK
504
+ INFO: 2025-11-24T08:59:32 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
505
+ INFO: 2025-11-24T08:59:32 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
506
+ INFO: 10.16.18.114:13813 - "POST /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team/invite HTTP/1.1" 500 Internal Server Error
507
+ ERROR: Exception in ASGI application
508
+ Traceback (most recent call last):
509
+ File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 426, in run_asgi
510
+ result = await app( # type: ignore[func-returns-value]
511
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
512
+ File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 84, in __call__
513
+ return await self.app(scope, receive, send)
514
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
515
+ File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1106, in __call__
516
+ await super().__call__(scope, receive, send)
517
+ File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 122, in __call__
518
+ await self.middleware_stack(scope, receive, send)
519
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 184, in __call__
520
+ raise exc
521
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 162, in __call__
522
+ await self.app(scope, receive, _send)
523
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 91, in __call__
524
+ await self.simple_response(scope, receive, send, request_headers=headers)
525
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 146, in simple_response
526
+ await self.app(scope, receive, send)
527
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 79, in __call__
528
+ raise exc
529
+ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 68, in __call__
530
+ await self.app(scope, receive, sender)
531
+ File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 20, in __call__
532
+ raise e
533
+ File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 17, in __call__
534
+ await self.app(scope, receive, send)
535
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 718, in __call__
536
+ await route.handle(scope, receive, send)
537
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
538
+ await self.app(scope, receive, send)
539
+ File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 66, in app
540
+ response = await func(request)
541
+ ^^^^^^^^^^^^^^^^^^^
542
+ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 274, in app
543
+ raw_response = await run_endpoint_function(
544
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
545
+ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function
546
+ return await dependant.call(**values)
547
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
548
+ File "/app/src/app/api/v1/projects.py", line 1135, in invite_to_project_team
549
+ full_invitation = InvitationCreate(
550
+ ^^^^^^^^^^^^^^^^^
551
+ File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 164, in __init__
552
+ __pydantic_self__.__pydantic_validator__.validate_python(data, self_instance=__pydantic_self__)
553
+ pydantic_core._pydantic_core.ValidationError: 1 validation error for InvitationCreate
554
+ contractor_id
555
+ Value error, User cannot be linked to both client and contractor [type=value_error, input_value=UUID('1af9fb24-e5bb-40ac-a748-0997580b4c32'), input_type=UUID]
556
+ For further information visit https://errors.pydantic.dev/2.5/v/value_error
557
+ INFO: 10.16.44.194:38273 - "GET /health HTTP/1.1" 200 OK
558
+
src/app/api/v1/projects.py CHANGED
@@ -1131,14 +1131,36 @@ async def invite_to_project_team(
1131
  detail=f"Project {project_id} not found"
1132
  )
1133
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1134
  # Build full invitation with project context
1135
  full_invitation = InvitationCreate(
1136
  email=invitation_data.email,
1137
  phone=invitation_data.phone,
1138
  invited_name=invitation_data.invited_name,
1139
  invited_role=invitation_data.invited_role,
1140
- client_id=project.client_id,
1141
- contractor_id=project.contractor_id,
1142
  invitation_method=invitation_data.invitation_method,
1143
  project_id=project_id,
1144
  project_role_id=invitation_data.project_role_id,
 
1131
  detail=f"Project {project_id} not found"
1132
  )
1133
 
1134
+ # Determine which organization the invited user should belong to based on role
1135
+ # Contractor roles: dispatcher, field_agent, driver
1136
+ # Client roles: client_admin
1137
+ # Can be either: sales_manager, sales_agent, project_manager
1138
+ contractor_roles = ['dispatcher', 'field_agent', 'driver']
1139
+ client_roles = ['client_admin']
1140
+
1141
+ # Determine org assignment based on invited role
1142
+ if invitation_data.invited_role in contractor_roles:
1143
+ # Contractor-specific roles always belong to project's contractor
1144
+ org_client_id = None
1145
+ org_contractor_id = project.contractor_id
1146
+ elif invitation_data.invited_role in client_roles:
1147
+ # Client-specific roles always belong to project's client
1148
+ org_client_id = project.client_id
1149
+ org_contractor_id = None
1150
+ else:
1151
+ # For ambiguous roles (sales_manager, sales_agent, project_manager),
1152
+ # default to contractor (most common case for project invitations)
1153
+ org_client_id = None
1154
+ org_contractor_id = project.contractor_id
1155
+
1156
  # Build full invitation with project context
1157
  full_invitation = InvitationCreate(
1158
  email=invitation_data.email,
1159
  phone=invitation_data.phone,
1160
  invited_name=invitation_data.invited_name,
1161
  invited_role=invitation_data.invited_role,
1162
+ client_id=org_client_id,
1163
+ contractor_id=org_contractor_id,
1164
  invitation_method=invitation_data.invitation_method,
1165
  project_id=project_id,
1166
  project_role_id=invitation_data.project_role_id,