Spaces:
Sleeping
Sleeping
Fix timesheets 404/403 by adding missing permissions and reordering routes to prevent path conflicts.
Browse files- docs/api/{TIMESHEETS_NEW_FEATURES.md → timesheets/TIMESHEETS_NEW_FEATURES.md} +0 -0
- docs/api/timesheets/TIMESHEET_FIXES.md +51 -0
- docs/api/{timesheets.md → timesheets/timesheets.md} +0 -0
- docs/devlogs/browser/browserconsole.txt +820 -192
- docs/devlogs/server/runtimeerror.txt +958 -189
- src/app/api/v1/timesheets.py +147 -148
- src/app/constants/permissions.py +7 -1
- src/app/core/permissions.py +14 -0
docs/api/{TIMESHEETS_NEW_FEATURES.md → timesheets/TIMESHEETS_NEW_FEATURES.md}
RENAMED
|
File without changes
|
docs/api/timesheets/TIMESHEET_FIXES.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Timesheet API Fixes - 2025-12-14
|
| 2 |
+
|
| 3 |
+
## Issues Fixed
|
| 4 |
+
|
| 5 |
+
### 1. 403 Forbidden Error on `/api/v1/timesheets`
|
| 6 |
+
**Problem:** Permission `view_timesheets` was not defined in the permissions system.
|
| 7 |
+
|
| 8 |
+
**Solution:** Added timesheet permissions to the system:
|
| 9 |
+
- Added `VIEW_TIMESHEETS` and `MANAGE_TIMESHEETS` constants to `src/app/constants/permissions.py`
|
| 10 |
+
- Added `view_timesheets` and `manage_timesheets` permissions to all relevant roles in `src/app/core/permissions.py`:
|
| 11 |
+
- `PLATFORM_ADMIN` (has all permissions via "*")
|
| 12 |
+
- `PROJECT_MANAGER` - can view and manage team timesheets
|
| 13 |
+
- `CONTRACTOR_ADMIN` - can view and manage team timesheets
|
| 14 |
+
- `CLIENT_ADMIN` - can view and manage team timesheets
|
| 15 |
+
- `DISPATCHER` - can view and manage team timesheets
|
| 16 |
+
- `FIELD_AGENT` - can view own timesheets only
|
| 17 |
+
|
| 18 |
+
### 2. 404 Not Found Error on `/api/v1/timesheets/team/stats`
|
| 19 |
+
**Problem:** Route ordering issue - the `/{timesheet_id}` route was defined before `/team/stats`, causing FastAPI to match "team" as a UUID parameter.
|
| 20 |
+
|
| 21 |
+
**Solution:** Moved the `/team/stats` endpoint definition to appear BEFORE the `/{timesheet_id}` route in `src/app/api/v1/timesheets.py`. FastAPI now correctly matches the specific route before trying the parameterized route.
|
| 22 |
+
|
| 23 |
+
## Files Modified
|
| 24 |
+
|
| 25 |
+
1. **src/app/constants/permissions.py**
|
| 26 |
+
- Added `VIEW_TIMESHEETS` and `MANAGE_TIMESHEETS` constants
|
| 27 |
+
|
| 28 |
+
2. **src/app/core/permissions.py**
|
| 29 |
+
- Added `view_timesheets` permission to: PROJECT_MANAGER, CONTRACTOR_ADMIN, CLIENT_ADMIN, DISPATCHER, FIELD_AGENT
|
| 30 |
+
- Added `manage_timesheets` permission to: PROJECT_MANAGER, CONTRACTOR_ADMIN, CLIENT_ADMIN, DISPATCHER
|
| 31 |
+
|
| 32 |
+
3. **src/app/api/v1/timesheets.py**
|
| 33 |
+
- Moved `/team/stats` endpoint to line ~680 (before `/{timesheet_id}` route)
|
| 34 |
+
- Removed duplicate definition from line ~1029
|
| 35 |
+
|
| 36 |
+
## Testing Required
|
| 37 |
+
|
| 38 |
+
After server restart, test:
|
| 39 |
+
1. `GET /api/v1/timesheets` - Should return 200 (not 403) for PROJECT_MANAGER role
|
| 40 |
+
2. `GET /api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=<uuid>` - Should return 200 (not 404)
|
| 41 |
+
3. `GET /api/v1/timesheets/{id}` - Should still work correctly
|
| 42 |
+
|
| 43 |
+
## Endpoints Now Working
|
| 44 |
+
|
| 45 |
+
All timesheet endpoints are now accessible with proper permissions:
|
| 46 |
+
- `GET /api/v1/timesheets` - List timesheets (with filters)
|
| 47 |
+
- `GET /api/v1/timesheets/stats` - Individual user stats
|
| 48 |
+
- `GET /api/v1/timesheets/team/stats` - Aggregated team stats
|
| 49 |
+
- `GET /api/v1/timesheets/export/csv` - CSV export
|
| 50 |
+
- `POST /api/v1/timesheets/bulk-update` - Bulk recalculation
|
| 51 |
+
- `POST /api/v1/timesheets/{id}/recalculate` - Single recalculation
|
docs/api/{timesheets.md → timesheets/timesheets.md}
RENAMED
|
File without changes
|
docs/devlogs/browser/browserconsole.txt
CHANGED
|
@@ -1,202 +1,830 @@
|
|
| 1 |
-
Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
|
| 2 |
-
%cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
|
| 3 |
-
⚠️ 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=02c37274:4393
|
| 5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 6 |
warnOnce @ react-router-dom.js?v=02c37274:4393
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
ℹ️ [
|
| 30 |
-
ℹ️ [
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
ℹ️ [
|
| 35 |
-
%cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
|
| 36 |
-
|
| 37 |
-
ℹ️ [
|
| 38 |
-
|
| 39 |
-
GET https://kamau1-swiftops-backend.hf.space/api/v1/
|
| 40 |
-
%cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/
|
| 41 |
-
GET https://kamau1-swiftops-backend.hf.space/api/v1/
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-expenses
|
| 49 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-expenses → 201 (2.33s)
|
| 50 |
-
%cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail
|
| 51 |
-
GET https://kamau1-swiftops-backend.hf.space/api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail → 200 (336ms)
|
| 52 |
-
Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
| 53 |
-
(anonymous) @ chunk-3WZOQKYN.js?v=02c37274:340
|
| 54 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-expenses
|
| 55 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-expenses → 201 (843ms)
|
| 56 |
-
%cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail
|
| 57 |
-
GET https://kamau1-swiftops-backend.hf.space/api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail → 200 (342ms)
|
| 58 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/start-journey
|
| 59 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/start-journey → 200 (718ms)
|
| 60 |
-
%cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail
|
| 61 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 62 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.26s)
|
| 63 |
-
GET https://kamau1-swiftops-backend.hf.space/api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail → 200 (1.47s)
|
| 64 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 65 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (309ms)
|
| 66 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 67 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (503ms)
|
| 68 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 69 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (346ms)
|
| 70 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 71 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.13s)
|
| 72 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 73 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.22s)
|
| 74 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 75 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (850ms)
|
| 76 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 77 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (343ms)
|
| 78 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 79 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.09s)
|
| 80 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 81 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.86s)
|
| 82 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 83 |
-
POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (432ms)
|
| 84 |
-
%cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 85 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (712ms)
|
| 86 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 87 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.16s)
|
| 88 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 89 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.34s)
|
| 90 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 91 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (533ms)
|
| 92 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 93 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (2.06s)
|
| 94 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 95 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.10s)
|
| 96 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 97 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.52s)
|
| 98 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 99 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (660ms)
|
| 100 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 101 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (530ms)
|
| 102 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 103 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.01s)
|
| 104 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 105 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (872ms)
|
| 106 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 107 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (931ms)
|
| 108 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 109 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (1.01s)
|
| 110 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 111 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/arrived
|
| 112 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location → 200 (362ms)
|
| 113 |
-
core.ts:169 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/arrived → 200 (669ms)
|
| 114 |
-
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail
|
| 115 |
-
core.ts:169 %cPOST%c https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location
|
| 116 |
-
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail → 200 (637ms)
|
| 117 |
-
api-client.ts:124 POST https://kamau1-swiftops-backend.hf.space/api/v1/ticket-assignments/assignments/e2096a93-8f55-4063-92c5-2bc7122b3228/update-location 400 (Bad Request)
|
| 118 |
request @ api-client.ts:124
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 146 |
Promise.catch
|
| 147 |
-
|
| 148 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 149 |
callCallback2 @ chunk-276SZO74.js?v=02c37274:3674
|
| 150 |
invokeGuardedCallbackDev @ chunk-276SZO74.js?v=02c37274:3699
|
| 151 |
invokeGuardedCallback @ chunk-276SZO74.js?v=02c37274:3733
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
at
|
| 180 |
-
at
|
| 181 |
-
at
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 186 |
callCallback2 @ chunk-276SZO74.js?v=02c37274:3674
|
| 187 |
invokeGuardedCallbackDev @ chunk-276SZO74.js?v=02c37274:3699
|
| 188 |
invokeGuardedCallback @ chunk-276SZO74.js?v=02c37274:3733
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
chunk-276SZO74.js?v=02c37274:21551 Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
|
| 2 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
|
| 3 |
+
react-router-dom.js?v=02c37274:4393 ⚠️ React Router Future Flag Warning: React Router will begin wrapping state updates in `React.startTransition` in v7. You can use the `v7_startTransition` future flag to opt-in early. For more information, see https://reactrouter.com/v6/upgrading/future#v7_starttransition.
|
| 4 |
warnOnce @ react-router-dom.js?v=02c37274:4393
|
| 5 |
+
logDeprecation @ react-router-dom.js?v=02c37274:4396
|
| 6 |
+
logV6DeprecationWarnings @ react-router-dom.js?v=02c37274:4399
|
| 7 |
+
(anonymous) @ react-router-dom.js?v=02c37274:5271
|
| 8 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 9 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 10 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 11 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 12 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 13 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 14 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 15 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 16 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 17 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 18 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 19 |
+
react-router-dom.js?v=02c37274: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=02c37274:4393
|
| 21 |
+
logDeprecation @ react-router-dom.js?v=02c37274:4396
|
| 22 |
+
logV6DeprecationWarnings @ react-router-dom.js?v=02c37274:4402
|
| 23 |
+
(anonymous) @ react-router-dom.js?v=02c37274:5271
|
| 24 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 25 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 26 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 27 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 28 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 29 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 30 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 31 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 32 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 33 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 34 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 35 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (1.31s)
|
| 36 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
|
| 37 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (392ms)
|
| 38 |
+
core.ts:119 ℹ️ [15:26:15] [COMPONENT] Dashboard component selected {role: 'project_manager', componentName: 'ProjectManagerDashboard', componentExists: true}
|
| 39 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/analytics/user/overview
|
| 40 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/analytics/user/overview → 200 (341ms)
|
| 41 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects?page=1&per_page=100
|
| 42 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects?page=1&per_page=100 → 200 (317ms)
|
| 43 |
+
core.ts:119 ℹ️ [15:27:49] [COMPONENT] ProjectList: Project selected {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', title: 'Atomio Fttx', status: 'active', willNavigateToSetup: false}
|
| 44 |
+
core.ts:119 ℹ️ [15:27:49] [COMPONENT] ProjectList: Switching to project {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
|
| 45 |
+
core.ts:119 ℹ️ [15:27:49] [AUTH] Updating user preferences {last_active_project_id: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
|
| 46 |
+
core.ts:169 %cPUT%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
|
| 47 |
+
core.ts:169 PUT https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (416ms)
|
| 48 |
+
core.ts:119 ℹ️ [15:27:49] [AUTH] Preferences updated successfully {last_active_project_id: '0ade6bd1-e492-4e25-b681-59f42058d29a'}
|
| 49 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me
|
| 50 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard
|
| 51 |
+
core.ts:119 ℹ️ [15:27:49] [COMPONENT] ProjectDashboardPage: Project dashboard loaded {projectId: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentProject: 'Atomio Fttx'}
|
| 52 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard → 200 (102.21s)
|
| 53 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me → 200 (1.01s)
|
| 54 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 55 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 200 (633ms)
|
| 56 |
+
core.ts:119 ℹ️ [15:27:52] [COMPONENT] AppLauncher: App clicked {appCode: 'timesheets', route: '/timesheets', primaryProject: '0ade6bd1-e492-4e25-b681-59f42058d29a', currentPath: '/project/0ade6bd1-e492-4e25-b681-59f42058d29a', metaApps: Array(6)}
|
| 57 |
+
core.ts:119 ℹ️ [15:27:52] [COMPONENT] AppLauncher: Navigation decision {hasProject: true, isInProjectContext: true, isMetaApp: false, appCode: 'timesheets', metaApps: Array(6)}
|
| 58 |
+
core.ts:119 ℹ️ [15:27:52] [COMPONENT] AppLauncher: Navigating to project-scoped route {projectRoute: '/project/0ade6bd1-e492-4e25-b681-59f42058d29a/timesheets', appCode: 'timesheets'}
|
| 59 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 60 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14
|
| 61 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
request @ api-client.ts:124
|
| 63 |
+
get @ api-client.ts:202
|
| 64 |
+
getTeamStats @ timesheet.service.ts:69
|
| 65 |
+
queryFn @ useTimesheets.ts:64
|
| 66 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 67 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 68 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 69 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 70 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 71 |
+
onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
|
| 72 |
+
subscribe @ @tanstack_react-query.js?v=02c37274:24
|
| 73 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3147
|
| 74 |
+
subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
|
| 75 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 76 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 77 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 78 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 79 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 80 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 81 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 82 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 83 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 84 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 85 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 86 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (520ms)
|
| 87 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 403 (Forbidden)
|
| 88 |
+
request @ api-client.ts:124
|
| 89 |
+
get @ api-client.ts:202
|
| 90 |
+
getTimesheets @ timesheet.service.ts:48
|
| 91 |
+
queryFn @ useTimesheets.ts:53
|
| 92 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 93 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 94 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 95 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 96 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 97 |
+
onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
|
| 98 |
+
subscribe @ @tanstack_react-query.js?v=02c37274:24
|
| 99 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3147
|
| 100 |
+
subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
|
| 101 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 102 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 103 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 104 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 105 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 106 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 107 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 108 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 109 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 110 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 111 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 112 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 → 403 (537ms)
|
| 113 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 114 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14
|
| 115 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
|
| 116 |
+
request @ api-client.ts:124
|
| 117 |
+
get @ api-client.ts:202
|
| 118 |
+
getTeamStats @ timesheet.service.ts:69
|
| 119 |
+
queryFn @ useTimesheets.ts:64
|
| 120 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 121 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 122 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:538
|
| 123 |
+
Promise.then
|
| 124 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:534
|
| 125 |
Promise.catch
|
| 126 |
+
run @ @tanstack_react-query.js?v=02c37274:517
|
| 127 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 128 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 129 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 130 |
+
onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
|
| 131 |
+
subscribe @ @tanstack_react-query.js?v=02c37274:24
|
| 132 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3147
|
| 133 |
+
subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
|
| 134 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 135 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 136 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 137 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 138 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 139 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 140 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 141 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 142 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 143 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 144 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 145 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (281ms)
|
| 146 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 403 (Forbidden)
|
| 147 |
+
request @ api-client.ts:124
|
| 148 |
+
get @ api-client.ts:202
|
| 149 |
+
getTimesheets @ timesheet.service.ts:48
|
| 150 |
+
queryFn @ useTimesheets.ts:53
|
| 151 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 152 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 153 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:538
|
| 154 |
+
Promise.then
|
| 155 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:534
|
| 156 |
+
Promise.catch
|
| 157 |
+
run @ @tanstack_react-query.js?v=02c37274:517
|
| 158 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 159 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 160 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 161 |
+
onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
|
| 162 |
+
subscribe @ @tanstack_react-query.js?v=02c37274:24
|
| 163 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3147
|
| 164 |
+
subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
|
| 165 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 166 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 167 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 168 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 169 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 170 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 171 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 172 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 173 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 174 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 175 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 176 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 → 403 (303ms)
|
| 177 |
+
chunk-276SZO74.js?v=02c37274:1861 The specified value "Sun Dec 07 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
|
| 178 |
+
set @ chunk-276SZO74.js?v=02c37274:1861
|
| 179 |
+
updateWrapper @ chunk-276SZO74.js?v=02c37274:1987
|
| 180 |
+
updateProperties @ chunk-276SZO74.js?v=02c37274:7762
|
| 181 |
+
commitUpdate @ chunk-276SZO74.js?v=02c37274:8419
|
| 182 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17763
|
| 183 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 184 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 185 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 186 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 187 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 188 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 189 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 190 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 191 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 192 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 193 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 194 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 195 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 196 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 197 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 198 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 199 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 200 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17813
|
| 201 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 202 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 203 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 204 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 205 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 206 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 207 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 208 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 209 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 210 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 211 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 212 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 213 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 214 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17851
|
| 215 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 216 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17818
|
| 217 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 218 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 219 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 220 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 221 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 222 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 223 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 224 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 225 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 226 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 227 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 228 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 229 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 230 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 231 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 232 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 233 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 234 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 235 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 236 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 237 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 238 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 239 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 240 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 241 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 242 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 243 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 244 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 245 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 246 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 247 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 248 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 249 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 250 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 251 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 252 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 253 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 254 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 255 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 256 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 257 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 258 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 259 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 260 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 261 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 262 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17794
|
| 263 |
+
commitMutationEffects @ chunk-276SZO74.js?v=02c37274:17663
|
| 264 |
+
commitRootImpl @ chunk-276SZO74.js?v=02c37274:19347
|
| 265 |
+
commitRoot @ chunk-276SZO74.js?v=02c37274:19277
|
| 266 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
|
| 267 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 268 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:18627
|
| 269 |
+
chunk-276SZO74.js?v=02c37274:1861 The specified value "Sun Dec 14 2025 03:00:00 GMT+0300 (East Africa Time)" does not conform to the required format, "yyyy-MM-dd".
|
| 270 |
+
set @ chunk-276SZO74.js?v=02c37274:1861
|
| 271 |
+
updateWrapper @ chunk-276SZO74.js?v=02c37274:1987
|
| 272 |
+
updateProperties @ chunk-276SZO74.js?v=02c37274:7762
|
| 273 |
+
commitUpdate @ chunk-276SZO74.js?v=02c37274:8419
|
| 274 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17763
|
| 275 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 276 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 277 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 278 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 279 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 280 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 281 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 282 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 283 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 284 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 285 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 286 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 287 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 288 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 289 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 290 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 291 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 292 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17813
|
| 293 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 294 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 295 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 296 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 297 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 298 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 299 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 300 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17737
|
| 301 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 302 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 303 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 304 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 305 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 306 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17851
|
| 307 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 308 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17818
|
| 309 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 310 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 311 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 312 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 313 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 314 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 315 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 316 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 317 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 318 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 319 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 320 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 321 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 322 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 323 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 324 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 325 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 326 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 327 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 328 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 329 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 330 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 331 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 332 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 333 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 334 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 335 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 336 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 337 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 338 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 339 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 340 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 341 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 342 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 343 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 344 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 345 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 346 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 347 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 348 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17896
|
| 349 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 350 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 351 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 352 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17699
|
| 353 |
+
recursivelyTraverseMutationEffects @ chunk-276SZO74.js?v=02c37274:17685
|
| 354 |
+
commitMutationEffectsOnFiber @ chunk-276SZO74.js?v=02c37274:17794
|
| 355 |
+
commitMutationEffects @ chunk-276SZO74.js?v=02c37274:17663
|
| 356 |
+
commitRootImpl @ chunk-276SZO74.js?v=02c37274:19347
|
| 357 |
+
commitRoot @ chunk-276SZO74.js?v=02c37274:19277
|
| 358 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
|
| 359 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 360 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:18627
|
| 361 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 362 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14
|
| 363 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
|
| 364 |
+
request @ api-client.ts:124
|
| 365 |
+
get @ api-client.ts:202
|
| 366 |
+
getTeamStats @ timesheet.service.ts:69
|
| 367 |
+
queryFn @ useTimesheets.ts:64
|
| 368 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 369 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 370 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 371 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 372 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 373 |
+
setOptions @ @tanstack_react-query.js?v=02c37274:2040
|
| 374 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3157
|
| 375 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 376 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 377 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 378 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 379 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 380 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 381 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 382 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 383 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 384 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 385 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 386 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (727ms)
|
| 387 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 403 (Forbidden)
|
| 388 |
+
request @ api-client.ts:124
|
| 389 |
+
get @ api-client.ts:202
|
| 390 |
+
getTimesheets @ timesheet.service.ts:48
|
| 391 |
+
queryFn @ useTimesheets.ts:53
|
| 392 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 393 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 394 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 395 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 396 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 397 |
+
setOptions @ @tanstack_react-query.js?v=02c37274:2040
|
| 398 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3157
|
| 399 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 400 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 401 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 402 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 403 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 404 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 405 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 406 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 407 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 408 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 409 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 410 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 → 403 (1.28s)
|
| 411 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 412 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
|
| 413 |
+
request @ api-client.ts:124
|
| 414 |
+
get @ api-client.ts:202
|
| 415 |
+
getTeamStats @ timesheet.service.ts:69
|
| 416 |
+
queryFn @ useTimesheets.ts:64
|
| 417 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 418 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 419 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:538
|
| 420 |
+
Promise.then
|
| 421 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:534
|
| 422 |
+
Promise.catch
|
| 423 |
+
run @ @tanstack_react-query.js?v=02c37274:517
|
| 424 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 425 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 426 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 427 |
+
setOptions @ @tanstack_react-query.js?v=02c37274:2040
|
| 428 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3157
|
| 429 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 430 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 431 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 432 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 433 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 434 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 435 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 436 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 437 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 438 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 439 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 440 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (247ms)
|
| 441 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14
|
| 442 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 403 (Forbidden)
|
| 443 |
+
request @ api-client.ts:124
|
| 444 |
+
get @ api-client.ts:202
|
| 445 |
+
getTimesheets @ timesheet.service.ts:48
|
| 446 |
+
queryFn @ useTimesheets.ts:53
|
| 447 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 448 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 449 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:538
|
| 450 |
+
Promise.then
|
| 451 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:534
|
| 452 |
+
Promise.catch
|
| 453 |
+
run @ @tanstack_react-query.js?v=02c37274:517
|
| 454 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 455 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 456 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 457 |
+
setOptions @ @tanstack_react-query.js?v=02c37274:2040
|
| 458 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3157
|
| 459 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 460 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 461 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 462 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 463 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 464 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 465 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 466 |
+
(anonymous) @ chunk-276SZO74.js?v=02c37274:19328
|
| 467 |
+
workLoop @ chunk-276SZO74.js?v=02c37274:197
|
| 468 |
+
flushWork @ chunk-276SZO74.js?v=02c37274:176
|
| 469 |
+
performWorkUntilDeadline @ chunk-276SZO74.js?v=02c37274:384
|
| 470 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 → 403 (300ms)
|
| 471 |
+
TimesheetsDashboard.tsx?t=1765726152802:45 Uncaught ReferenceError: startOfWeek is not defined
|
| 472 |
+
at TimesheetsDashboard (TimesheetsDashboard.tsx?t=1765726152802:45:30)
|
| 473 |
+
at renderWithHooks (chunk-276SZO74.js?v=02c37274:11548:26)
|
| 474 |
+
at updateFunctionComponent (chunk-276SZO74.js?v=02c37274:14582:28)
|
| 475 |
+
at beginWork (chunk-276SZO74.js?v=02c37274:15924:22)
|
| 476 |
+
at HTMLUnknownElement.callCallback2 (chunk-276SZO74.js?v=02c37274:3674:22)
|
| 477 |
+
at Object.invokeGuardedCallbackDev (chunk-276SZO74.js?v=02c37274:3699:24)
|
| 478 |
+
at invokeGuardedCallback (chunk-276SZO74.js?v=02c37274:3733:39)
|
| 479 |
+
at beginWork$1 (chunk-276SZO74.js?v=02c37274:19765:15)
|
| 480 |
+
at performUnitOfWork (chunk-276SZO74.js?v=02c37274:19198:20)
|
| 481 |
+
at workLoopSync (chunk-276SZO74.js?v=02c37274:19137:13)
|
| 482 |
+
TimesheetsDashboard @ TimesheetsDashboard.tsx?t=1765726152802:45
|
| 483 |
+
renderWithHooks @ chunk-276SZO74.js?v=02c37274:11548
|
| 484 |
+
updateFunctionComponent @ chunk-276SZO74.js?v=02c37274:14582
|
| 485 |
+
beginWork @ chunk-276SZO74.js?v=02c37274:15924
|
| 486 |
callCallback2 @ chunk-276SZO74.js?v=02c37274:3674
|
| 487 |
invokeGuardedCallbackDev @ chunk-276SZO74.js?v=02c37274:3699
|
| 488 |
invokeGuardedCallback @ chunk-276SZO74.js?v=02c37274:3733
|
| 489 |
+
beginWork$1 @ chunk-276SZO74.js?v=02c37274:19765
|
| 490 |
+
performUnitOfWork @ chunk-276SZO74.js?v=02c37274:19198
|
| 491 |
+
workLoopSync @ chunk-276SZO74.js?v=02c37274:19137
|
| 492 |
+
renderRootSync @ chunk-276SZO74.js?v=02c37274:19116
|
| 493 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18874
|
| 494 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 495 |
+
flushSync @ chunk-276SZO74.js?v=02c37274:18959
|
| 496 |
+
scheduleRefresh @ chunk-276SZO74.js?v=02c37274:20004
|
| 497 |
+
(anonymous) @ @react-refresh:228
|
| 498 |
+
performReactRefresh @ @react-refresh:217
|
| 499 |
+
(anonymous) @ @react-refresh:608
|
| 500 |
+
setTimeout
|
| 501 |
+
(anonymous) @ @react-refresh:598
|
| 502 |
+
validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
|
| 503 |
+
(anonymous) @ TimesheetsDashboard.tsx:177
|
| 504 |
+
(anonymous) @ client:34
|
| 505 |
+
(anonymous) @ client:218
|
| 506 |
+
(anonymous) @ client:193
|
| 507 |
+
queueUpdate @ client:193
|
| 508 |
+
await in queueUpdate
|
| 509 |
+
(anonymous) @ client:642
|
| 510 |
+
handleMessage @ client:640
|
| 511 |
+
(anonymous) @ client:550
|
| 512 |
+
TimesheetsDashboard.tsx?t=1765726152802:45 Uncaught ReferenceError: startOfWeek is not defined
|
| 513 |
+
at TimesheetsDashboard (TimesheetsDashboard.tsx?t=1765726152802:45:30)
|
| 514 |
+
at renderWithHooks (chunk-276SZO74.js?v=02c37274:11548:26)
|
| 515 |
+
at updateFunctionComponent (chunk-276SZO74.js?v=02c37274:14582:28)
|
| 516 |
+
at beginWork (chunk-276SZO74.js?v=02c37274:15924:22)
|
| 517 |
+
at HTMLUnknownElement.callCallback2 (chunk-276SZO74.js?v=02c37274:3674:22)
|
| 518 |
+
at Object.invokeGuardedCallbackDev (chunk-276SZO74.js?v=02c37274:3699:24)
|
| 519 |
+
at invokeGuardedCallback (chunk-276SZO74.js?v=02c37274:3733:39)
|
| 520 |
+
at beginWork$1 (chunk-276SZO74.js?v=02c37274:19765:15)
|
| 521 |
+
at performUnitOfWork (chunk-276SZO74.js?v=02c37274:19198:20)
|
| 522 |
+
at workLoopSync (chunk-276SZO74.js?v=02c37274:19137:13)
|
| 523 |
+
TimesheetsDashboard @ TimesheetsDashboard.tsx?t=1765726152802:45
|
| 524 |
+
renderWithHooks @ chunk-276SZO74.js?v=02c37274:11548
|
| 525 |
+
updateFunctionComponent @ chunk-276SZO74.js?v=02c37274:14582
|
| 526 |
+
beginWork @ chunk-276SZO74.js?v=02c37274:15924
|
| 527 |
callCallback2 @ chunk-276SZO74.js?v=02c37274:3674
|
| 528 |
invokeGuardedCallbackDev @ chunk-276SZO74.js?v=02c37274:3699
|
| 529 |
invokeGuardedCallback @ chunk-276SZO74.js?v=02c37274:3733
|
| 530 |
+
beginWork$1 @ chunk-276SZO74.js?v=02c37274:19765
|
| 531 |
+
performUnitOfWork @ chunk-276SZO74.js?v=02c37274:19198
|
| 532 |
+
workLoopSync @ chunk-276SZO74.js?v=02c37274:19137
|
| 533 |
+
renderRootSync @ chunk-276SZO74.js?v=02c37274:19116
|
| 534 |
+
recoverFromConcurrentError @ chunk-276SZO74.js?v=02c37274:18736
|
| 535 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18879
|
| 536 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 537 |
+
flushSync @ chunk-276SZO74.js?v=02c37274:18959
|
| 538 |
+
scheduleRefresh @ chunk-276SZO74.js?v=02c37274:20004
|
| 539 |
+
(anonymous) @ @react-refresh:228
|
| 540 |
+
performReactRefresh @ @react-refresh:217
|
| 541 |
+
(anonymous) @ @react-refresh:608
|
| 542 |
+
setTimeout
|
| 543 |
+
(anonymous) @ @react-refresh:598
|
| 544 |
+
validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
|
| 545 |
+
(anonymous) @ TimesheetsDashboard.tsx:177
|
| 546 |
+
(anonymous) @ client:34
|
| 547 |
+
(anonymous) @ client:218
|
| 548 |
+
(anonymous) @ client:193
|
| 549 |
+
queueUpdate @ client:193
|
| 550 |
+
await in queueUpdate
|
| 551 |
+
(anonymous) @ client:642
|
| 552 |
+
handleMessage @ client:640
|
| 553 |
+
(anonymous) @ client:550
|
| 554 |
+
@react-refresh:228 The above error occurred in the <TimesheetsDashboard> component:
|
| 555 |
+
|
| 556 |
+
at TimesheetsDashboard (http://localhost:8080/src/pages/project/timesheets/TimesheetsDashboard.tsx?t=1765726152802:35:27)
|
| 557 |
+
at ProtectedRoute (http://localhost:8080/src/components/auth/ProtectedRoute.tsx:30:34)
|
| 558 |
+
at Suspense
|
| 559 |
+
at AppShell (http://localhost:8080/src/App.tsx:181:21)
|
| 560 |
+
at RenderedRoute (http://localhost:8080/node_modules/.vite/deps/react-router-dom.js?v=02c37274:4088:5)
|
| 561 |
+
at Routes (http://localhost:8080/node_modules/.vite/deps/react-router-dom.js?v=02c37274:4558:5)
|
| 562 |
+
at TopbarProvider (http://localhost:8080/src/contexts/TopbarContext.tsx:25:34)
|
| 563 |
+
at Router (http://localhost:8080/node_modules/.vite/deps/react-router-dom.js?v=02c37274:4501:15)
|
| 564 |
+
at BrowserRouter (http://localhost:8080/node_modules/.vite/deps/react-router-dom.js?v=02c37274:5247:5)
|
| 565 |
+
at Provider (http://localhost:8080/node_modules/.vite/deps/chunk-6JTMSBF5.js?v=02c37274:38:15)
|
| 566 |
+
at TooltipProvider (http://localhost:8080/node_modules/.vite/deps/@radix-ui_react-tooltip.js?v=02c37274:64:5)
|
| 567 |
+
at ThemeProvider (http://localhost:8080/src/contexts/ThemeProvider.tsx:29:33)
|
| 568 |
+
at LocationTrackerProvider (http://localhost:8080/src/contexts/LocationTrackerContext.tsx:34:43)
|
| 569 |
+
at UserPreferencesProvider (http://localhost:8080/src/contexts/UserPreferencesContext.tsx:28:43)
|
| 570 |
+
at QueryClientProvider (http://localhost:8080/node_modules/.vite/deps/@tanstack_react-query.js?v=02c37274:2934:3)
|
| 571 |
+
at App (http://localhost:8080/src/App.tsx:243:35)
|
| 572 |
+
|
| 573 |
+
Consider adding an error boundary to your tree to customize error handling behavior.
|
| 574 |
+
Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.
|
| 575 |
+
logCapturedError @ chunk-276SZO74.js?v=02c37274:14032
|
| 576 |
+
update.callback @ chunk-276SZO74.js?v=02c37274:14052
|
| 577 |
+
callCallback @ chunk-276SZO74.js?v=02c37274:11248
|
| 578 |
+
commitUpdateQueue @ chunk-276SZO74.js?v=02c37274:11265
|
| 579 |
+
commitLayoutEffectOnFiber @ chunk-276SZO74.js?v=02c37274:17093
|
| 580 |
+
commitLayoutMountEffects_complete @ chunk-276SZO74.js?v=02c37274:17980
|
| 581 |
+
commitLayoutEffects_begin @ chunk-276SZO74.js?v=02c37274:17969
|
| 582 |
+
commitLayoutEffects @ chunk-276SZO74.js?v=02c37274:17920
|
| 583 |
+
commitRootImpl @ chunk-276SZO74.js?v=02c37274:19353
|
| 584 |
+
commitRoot @ chunk-276SZO74.js?v=02c37274:19277
|
| 585 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
|
| 586 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 587 |
+
flushSync @ chunk-276SZO74.js?v=02c37274:18959
|
| 588 |
+
scheduleRefresh @ chunk-276SZO74.js?v=02c37274:20004
|
| 589 |
+
(anonymous) @ @react-refresh:228
|
| 590 |
+
performReactRefresh @ @react-refresh:217
|
| 591 |
+
(anonymous) @ @react-refresh:608
|
| 592 |
+
setTimeout
|
| 593 |
+
(anonymous) @ @react-refresh:598
|
| 594 |
+
validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
|
| 595 |
+
(anonymous) @ TimesheetsDashboard.tsx:177
|
| 596 |
+
(anonymous) @ client:34
|
| 597 |
+
(anonymous) @ client:218
|
| 598 |
+
(anonymous) @ client:193
|
| 599 |
+
queueUpdate @ client:193
|
| 600 |
+
await in queueUpdate
|
| 601 |
+
(anonymous) @ client:642
|
| 602 |
+
handleMessage @ client:640
|
| 603 |
+
(anonymous) @ client:550
|
| 604 |
+
TimesheetsDashboard.tsx?t=1765726152802:45 Uncaught (in promise) ReferenceError: startOfWeek is not defined
|
| 605 |
+
at TimesheetsDashboard (TimesheetsDashboard.tsx?t=1765726152802:45:30)
|
| 606 |
+
at renderWithHooks (chunk-276SZO74.js?v=02c37274:11548:26)
|
| 607 |
+
at updateFunctionComponent (chunk-276SZO74.js?v=02c37274:14582:28)
|
| 608 |
+
at beginWork (chunk-276SZO74.js?v=02c37274:15924:22)
|
| 609 |
+
at beginWork$1 (chunk-276SZO74.js?v=02c37274:19753:22)
|
| 610 |
+
at performUnitOfWork (chunk-276SZO74.js?v=02c37274:19198:20)
|
| 611 |
+
at workLoopSync (chunk-276SZO74.js?v=02c37274:19137:13)
|
| 612 |
+
at renderRootSync (chunk-276SZO74.js?v=02c37274:19116:15)
|
| 613 |
+
at recoverFromConcurrentError (chunk-276SZO74.js?v=02c37274:18736:28)
|
| 614 |
+
at performSyncWorkOnRoot (chunk-276SZO74.js?v=02c37274:18879:28)
|
| 615 |
+
TimesheetsDashboard @ TimesheetsDashboard.tsx?t=1765726152802:45
|
| 616 |
+
renderWithHooks @ chunk-276SZO74.js?v=02c37274:11548
|
| 617 |
+
updateFunctionComponent @ chunk-276SZO74.js?v=02c37274:14582
|
| 618 |
+
beginWork @ chunk-276SZO74.js?v=02c37274:15924
|
| 619 |
+
beginWork$1 @ chunk-276SZO74.js?v=02c37274:19753
|
| 620 |
+
performUnitOfWork @ chunk-276SZO74.js?v=02c37274:19198
|
| 621 |
+
workLoopSync @ chunk-276SZO74.js?v=02c37274:19137
|
| 622 |
+
renderRootSync @ chunk-276SZO74.js?v=02c37274:19116
|
| 623 |
+
recoverFromConcurrentError @ chunk-276SZO74.js?v=02c37274:18736
|
| 624 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18879
|
| 625 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 626 |
+
flushSync @ chunk-276SZO74.js?v=02c37274:18959
|
| 627 |
+
scheduleRefresh @ chunk-276SZO74.js?v=02c37274:20004
|
| 628 |
+
(anonymous) @ @react-refresh:228
|
| 629 |
+
performReactRefresh @ @react-refresh:217
|
| 630 |
+
(anonymous) @ @react-refresh:608
|
| 631 |
+
setTimeout
|
| 632 |
+
(anonymous) @ @react-refresh:598
|
| 633 |
+
validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
|
| 634 |
+
(anonymous) @ TimesheetsDashboard.tsx:177
|
| 635 |
+
(anonymous) @ client:34
|
| 636 |
+
(anonymous) @ client:218
|
| 637 |
+
(anonymous) @ client:193
|
| 638 |
+
queueUpdate @ client:193
|
| 639 |
+
await in queueUpdate
|
| 640 |
+
(anonymous) @ client:642
|
| 641 |
+
handleMessage @ client:640
|
| 642 |
+
(anonymous) @ client:550
|
| 643 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 644 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14
|
| 645 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences
|
| 646 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
|
| 647 |
+
request @ api-client.ts:124
|
| 648 |
+
get @ api-client.ts:202
|
| 649 |
+
getTeamStats @ timesheet.service.ts:69
|
| 650 |
+
queryFn @ useTimesheets.ts:64
|
| 651 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 652 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 653 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 654 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 655 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 656 |
+
onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
|
| 657 |
+
subscribe @ @tanstack_react-query.js?v=02c37274:24
|
| 658 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3147
|
| 659 |
+
subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
|
| 660 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 661 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 662 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 663 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 664 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 665 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 666 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 667 |
+
commitRootImpl @ chunk-276SZO74.js?v=02c37274:19416
|
| 668 |
+
commitRoot @ chunk-276SZO74.js?v=02c37274:19277
|
| 669 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
|
| 670 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 671 |
+
flushSync @ chunk-276SZO74.js?v=02c37274:18959
|
| 672 |
+
scheduleRoot @ chunk-276SZO74.js?v=02c37274:20015
|
| 673 |
+
(anonymous) @ @react-refresh:208
|
| 674 |
+
performReactRefresh @ @react-refresh:190
|
| 675 |
+
(anonymous) @ @react-refresh:608
|
| 676 |
+
setTimeout
|
| 677 |
+
(anonymous) @ @react-refresh:598
|
| 678 |
+
validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
|
| 679 |
+
(anonymous) @ TimesheetsDashboard.tsx?t=1765726152802:181
|
| 680 |
+
(anonymous) @ client:34
|
| 681 |
+
(anonymous) @ client:218
|
| 682 |
+
(anonymous) @ client:193
|
| 683 |
+
queueUpdate @ client:193
|
| 684 |
+
await in queueUpdate
|
| 685 |
+
(anonymous) @ client:642
|
| 686 |
+
handleMessage @ client:640
|
| 687 |
+
(anonymous) @ client:550
|
| 688 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (1.34s)
|
| 689 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/auth/me/preferences → 200 (1.45s)
|
| 690 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 403 (Forbidden)
|
| 691 |
+
request @ api-client.ts:124
|
| 692 |
+
get @ api-client.ts:202
|
| 693 |
+
getTimesheets @ timesheet.service.ts:48
|
| 694 |
+
queryFn @ useTimesheets.ts:53
|
| 695 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 696 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 697 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 698 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 699 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 700 |
+
onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
|
| 701 |
+
subscribe @ @tanstack_react-query.js?v=02c37274:24
|
| 702 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3147
|
| 703 |
+
subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
|
| 704 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 705 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 706 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 707 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 708 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 709 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 710 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 711 |
+
commitRootImpl @ chunk-276SZO74.js?v=02c37274:19416
|
| 712 |
+
commitRoot @ chunk-276SZO74.js?v=02c37274:19277
|
| 713 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
|
| 714 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 715 |
+
flushSync @ chunk-276SZO74.js?v=02c37274:18959
|
| 716 |
+
scheduleRoot @ chunk-276SZO74.js?v=02c37274:20015
|
| 717 |
+
(anonymous) @ @react-refresh:208
|
| 718 |
+
performReactRefresh @ @react-refresh:190
|
| 719 |
+
(anonymous) @ @react-refresh:608
|
| 720 |
+
setTimeout
|
| 721 |
+
(anonymous) @ @react-refresh:598
|
| 722 |
+
validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
|
| 723 |
+
(anonymous) @ TimesheetsDashboard.tsx?t=1765726152802:181
|
| 724 |
+
(anonymous) @ client:34
|
| 725 |
+
(anonymous) @ client:218
|
| 726 |
+
(anonymous) @ client:193
|
| 727 |
+
queueUpdate @ client:193
|
| 728 |
+
await in queueUpdate
|
| 729 |
+
(anonymous) @ client:642
|
| 730 |
+
handleMessage @ client:640
|
| 731 |
+
(anonymous) @ client:550
|
| 732 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 → 403 (1.59s)
|
| 733 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14
|
| 734 |
+
core.ts:169 %cGET%c https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 735 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a 404 (Not Found)
|
| 736 |
+
request @ api-client.ts:124
|
| 737 |
+
get @ api-client.ts:202
|
| 738 |
+
getTeamStats @ timesheet.service.ts:69
|
| 739 |
+
queryFn @ useTimesheets.ts:64
|
| 740 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 741 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 742 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:538
|
| 743 |
+
Promise.then
|
| 744 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:534
|
| 745 |
+
Promise.catch
|
| 746 |
+
run @ @tanstack_react-query.js?v=02c37274:517
|
| 747 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 748 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 749 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 750 |
+
onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
|
| 751 |
+
subscribe @ @tanstack_react-query.js?v=02c37274:24
|
| 752 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3147
|
| 753 |
+
subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
|
| 754 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 755 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 756 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 757 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 758 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 759 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 760 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 761 |
+
commitRootImpl @ chunk-276SZO74.js?v=02c37274:19416
|
| 762 |
+
commitRoot @ chunk-276SZO74.js?v=02c37274:19277
|
| 763 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
|
| 764 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 765 |
+
flushSync @ chunk-276SZO74.js?v=02c37274:18959
|
| 766 |
+
scheduleRoot @ chunk-276SZO74.js?v=02c37274:20015
|
| 767 |
+
(anonymous) @ @react-refresh:208
|
| 768 |
+
performReactRefresh @ @react-refresh:190
|
| 769 |
+
(anonymous) @ @react-refresh:608
|
| 770 |
+
setTimeout
|
| 771 |
+
(anonymous) @ @react-refresh:598
|
| 772 |
+
validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
|
| 773 |
+
(anonymous) @ TimesheetsDashboard.tsx?t=1765726152802:181
|
| 774 |
+
(anonymous) @ client:34
|
| 775 |
+
(anonymous) @ client:218
|
| 776 |
+
(anonymous) @ client:193
|
| 777 |
+
queueUpdate @ client:193
|
| 778 |
+
await in queueUpdate
|
| 779 |
+
(anonymous) @ client:642
|
| 780 |
+
handleMessage @ client:640
|
| 781 |
+
(anonymous) @ client:550
|
| 782 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a → 404 (1.79s)
|
| 783 |
+
api-client.ts:124 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 403 (Forbidden)
|
| 784 |
+
request @ api-client.ts:124
|
| 785 |
+
get @ api-client.ts:202
|
| 786 |
+
getTimesheets @ timesheet.service.ts:48
|
| 787 |
+
queryFn @ useTimesheets.ts:53
|
| 788 |
+
fetchFn @ @tanstack_react-query.js?v=02c37274:881
|
| 789 |
+
run @ @tanstack_react-query.js?v=02c37274:513
|
| 790 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:538
|
| 791 |
+
Promise.then
|
| 792 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:534
|
| 793 |
+
Promise.catch
|
| 794 |
+
run @ @tanstack_react-query.js?v=02c37274:517
|
| 795 |
+
start @ @tanstack_react-query.js?v=02c37274:555
|
| 796 |
+
fetch @ @tanstack_react-query.js?v=02c37274:969
|
| 797 |
+
executeFetch_fn @ @tanstack_react-query.js?v=02c37274:2280
|
| 798 |
+
onSubscribe @ @tanstack_react-query.js?v=02c37274:1983
|
| 799 |
+
subscribe @ @tanstack_react-query.js?v=02c37274:24
|
| 800 |
+
(anonymous) @ @tanstack_react-query.js?v=02c37274:3147
|
| 801 |
+
subscribeToStore @ chunk-276SZO74.js?v=02c37274:11984
|
| 802 |
+
commitHookEffectListMount @ chunk-276SZO74.js?v=02c37274:16915
|
| 803 |
+
commitPassiveMountOnFiber @ chunk-276SZO74.js?v=02c37274:18156
|
| 804 |
+
commitPassiveMountEffects_complete @ chunk-276SZO74.js?v=02c37274:18129
|
| 805 |
+
commitPassiveMountEffects_begin @ chunk-276SZO74.js?v=02c37274:18119
|
| 806 |
+
commitPassiveMountEffects @ chunk-276SZO74.js?v=02c37274:18109
|
| 807 |
+
flushPassiveEffectsImpl @ chunk-276SZO74.js?v=02c37274:19490
|
| 808 |
+
flushPassiveEffects @ chunk-276SZO74.js?v=02c37274:19447
|
| 809 |
+
commitRootImpl @ chunk-276SZO74.js?v=02c37274:19416
|
| 810 |
+
commitRoot @ chunk-276SZO74.js?v=02c37274:19277
|
| 811 |
+
performSyncWorkOnRoot @ chunk-276SZO74.js?v=02c37274:18895
|
| 812 |
+
flushSyncCallbacks @ chunk-276SZO74.js?v=02c37274:9119
|
| 813 |
+
flushSync @ chunk-276SZO74.js?v=02c37274:18959
|
| 814 |
+
scheduleRoot @ chunk-276SZO74.js?v=02c37274:20015
|
| 815 |
+
(anonymous) @ @react-refresh:208
|
| 816 |
+
performReactRefresh @ @react-refresh:190
|
| 817 |
+
(anonymous) @ @react-refresh:608
|
| 818 |
+
setTimeout
|
| 819 |
+
(anonymous) @ @react-refresh:598
|
| 820 |
+
validateRefreshBoundaryAndEnqueueUpdate @ @react-refresh:648
|
| 821 |
+
(anonymous) @ TimesheetsDashboard.tsx?t=1765726152802:181
|
| 822 |
+
(anonymous) @ client:34
|
| 823 |
+
(anonymous) @ client:218
|
| 824 |
+
(anonymous) @ client:193
|
| 825 |
+
queueUpdate @ client:193
|
| 826 |
+
await in queueUpdate
|
| 827 |
+
(anonymous) @ client:642
|
| 828 |
+
handleMessage @ client:640
|
| 829 |
+
(anonymous) @ client:550
|
| 830 |
+
core.ts:169 GET https://kamau1-swiftops-backend.hf.space/api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 → 403 (2.05s)
|
docs/devlogs/server/runtimeerror.txt
CHANGED
|
@@ -1,194 +1,963 @@
|
|
| 1 |
-
===== Application Startup at 2025-12-13 12:
|
| 2 |
|
| 3 |
INFO: Started server process [7]
|
| 4 |
INFO: Waiting for application startup.
|
| 5 |
-
INFO: 2025-12-13T12:
|
| 6 |
-
INFO: 2025-12-13T12:
|
| 7 |
-
INFO: 2025-12-13T12:
|
| 8 |
-
INFO: 2025-12-13T12:
|
| 9 |
-
INFO: 2025-12-13T12:
|
| 10 |
-
INFO: 2025-12-13T12:
|
| 11 |
-
INFO: 2025-12-13T12:
|
| 12 |
-
INFO: 2025-12-13T12:
|
| 13 |
-
INFO: 2025-12-13T12:
|
| 14 |
-
INFO: 2025-12-13T12:
|
| 15 |
-
INFO: 2025-12-13T12:
|
| 16 |
-
INFO: 2025-12-13T12:
|
| 17 |
-
INFO: 2025-12-13T12:
|
| 18 |
-
INFO: 2025-12-13T12:
|
| 19 |
-
INFO: 2025-12-13T12:
|
| 20 |
-
INFO: 2025-12-13T12:
|
| 21 |
-
INFO: 2025-12-13T12:
|
| 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.
|
| 25 |
-
INFO: 10.16.
|
| 26 |
-
INFO: 10.16.37.13:
|
| 27 |
-
INFO: 10.16.37.13:
|
| 28 |
-
INFO:
|
| 29 |
-
INFO:
|
| 30 |
-
INFO: 10.16.
|
| 31 |
-
INFO: 10.16.13.79:
|
| 32 |
-
INFO:
|
| 33 |
-
INFO: 2025-12-13T12:
|
| 34 |
-
INFO:
|
| 35 |
-
INFO: 10.16.37.13:
|
| 36 |
-
INFO: 10.16.37.13:
|
| 37 |
-
INFO:
|
| 38 |
-
INFO:
|
| 39 |
-
INFO: 10.16.
|
| 40 |
-
INFO: 10.16.
|
| 41 |
-
INFO:
|
| 42 |
-
INFO: 2025-12-13T12:
|
| 43 |
-
INFO:
|
| 44 |
-
INFO:
|
| 45 |
-
INFO: 2025-12-13T12:
|
| 46 |
-
INFO: 10.16.
|
| 47 |
-
INFO:
|
| 48 |
-
INFO: 2025-12-13T12:
|
| 49 |
-
INFO:
|
| 50 |
-
INFO:
|
| 51 |
-
INFO:
|
| 52 |
-
INFO:
|
| 53 |
-
INFO: 10.16.
|
| 54 |
-
INFO:
|
| 55 |
-
INFO: 2025-12-13T12:
|
| 56 |
-
INFO:
|
| 57 |
-
INFO: 10.16.37.13:
|
| 58 |
-
INFO:
|
| 59 |
-
INFO:
|
| 60 |
-
INFO: 10.16.37.13:
|
| 61 |
-
INFO: 2025-12-13T12:
|
| 62 |
-
INFO: 2025-12-13T12:
|
| 63 |
-
INFO: 10.16.
|
| 64 |
-
INFO:
|
| 65 |
-
INFO: 10.16.13.79:
|
| 66 |
-
INFO: 10.16.
|
| 67 |
-
INFO: 10.16.13.79:
|
| 68 |
-
INFO: 10.16.
|
| 69 |
-
INFO:
|
| 70 |
-
INFO:
|
| 71 |
-
INFO:
|
| 72 |
-
INFO:
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
INFO: 10.16.
|
| 133 |
-
INFO: 10.16.13.79:
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
INFO: 10.16.
|
| 194 |
-
INFO: 10.16.13.79:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
===== Application Startup at 2025-12-13 12:50:49 =====
|
| 2 |
|
| 3 |
INFO: Started server process [7]
|
| 4 |
INFO: Waiting for application startup.
|
| 5 |
+
INFO: 2025-12-13T12:51:02 - app.main: ============================================================
|
| 6 |
+
INFO: 2025-12-13T12:51:02 - app.main: 🚀 SwiftOps API v1.0.0 | PRODUCTION
|
| 7 |
+
INFO: 2025-12-13T12:51:02 - app.main: 📊 Dashboard: Enabled
|
| 8 |
+
INFO: 2025-12-13T12:51:02 - app.main: ============================================================
|
| 9 |
+
INFO: 2025-12-13T12:51:02 - app.main: 📦 Database:
|
| 10 |
+
INFO: 2025-12-13T12:51:02 - app.main: ✓ Connected | 45 tables | 6 users
|
| 11 |
+
INFO: 2025-12-13T12:51:02 - app.main: 💾 Cache & Sessions:
|
| 12 |
+
INFO: 2025-12-13T12:51:03 - app.services.otp_service: ✅ OTP Service initialized with Redis storage
|
| 13 |
+
INFO: 2025-12-13T12:51:03 - app.main: ✓ Redis: Connected
|
| 14 |
+
INFO: 2025-12-13T12:51:03 - app.main: 🔌 External Services:
|
| 15 |
+
INFO: 2025-12-13T12:51:04 - app.main: ✓ Cloudinary: Connected
|
| 16 |
+
INFO: 2025-12-13T12:51:04 - app.main: ✓ Resend: Configured
|
| 17 |
+
INFO: 2025-12-13T12:51:04 - app.main: ○ WASender: Disconnected
|
| 18 |
+
INFO: 2025-12-13T12:51:04 - app.main: ✓ Supabase: Connected | 6 buckets
|
| 19 |
+
INFO: 2025-12-13T12:51:04 - app.main: ============================================================
|
| 20 |
+
INFO: 2025-12-13T12:51:04 - app.main: ✅ Startup complete | Ready to serve requests
|
| 21 |
+
INFO: 2025-12-13T12:51:04 - app.main: ============================================================
|
| 22 |
INFO: Application startup complete.
|
| 23 |
INFO: Uvicorn running on http://0.0.0.0:7860 (Press CTRL+C to quit)
|
| 24 |
+
INFO: 10.16.13.79:1515 - "GET /health HTTP/1.1" 200 OK
|
| 25 |
+
INFO: 10.16.13.79:33230 - "GET /health HTTP/1.1" 200 OK
|
| 26 |
+
INFO: 10.16.37.13:29054 - "GET /health HTTP/1.1" 200 OK
|
| 27 |
+
INFO: 10.16.37.13:60015 - "GET /health HTTP/1.1" 200 OK
|
| 28 |
+
INFO: 10.16.37.13:15374 - "GET /health HTTP/1.1" 200 OK
|
| 29 |
+
INFO: 10.16.13.79:51701 - "GET /health HTTP/1.1" 200 OK
|
| 30 |
+
INFO: 10.16.37.13:62346 - "GET /health HTTP/1.1" 200 OK
|
| 31 |
+
INFO: 10.16.13.79:16683 - "GET /health HTTP/1.1" 200 OK
|
| 32 |
+
INFO: 2025-12-13T12:55:53 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 33 |
+
INFO: 2025-12-13T12:55:53 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 34 |
+
INFO: 10.16.13.79:50630 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/team HTTP/1.1" 200 OK
|
| 35 |
+
INFO: 10.16.37.13:31510 - "GET /health HTTP/1.1" 200 OK
|
| 36 |
+
INFO: 10.16.37.13:44472 - "GET /health HTTP/1.1" 200 OK
|
| 37 |
+
INFO: 2025-12-13T12:57:05 - app.services.timesheet_realtime_service: Timesheet 7d9fa491-c16d-42b2-8115-b02d98873b64 updated for assignment_created. Entity: ticket_assignment:cef4dc07-81ee-402e-b385-b27198523108
|
| 38 |
+
INFO: 2025-12-13T12:57:05 - app.services.ticket_assignment_service: Ticket 11367b6d-6d4e-435f-9c8e-f03ae90d429e assigned to viya - notification queued
|
| 39 |
+
INFO: 10.16.37.13:44472 - "POST /api/v1/ticket-assignments/tickets/11367b6d-6d4e-435f-9c8e-f03ae90d429e/assign HTTP/1.1" 201 Created
|
| 40 |
+
INFO: 10.16.13.79:14199 - "GET /api/v1/tickets/11367b6d-6d4e-435f-9c8e-f03ae90d429e/detail HTTP/1.1" 200 OK
|
| 41 |
+
INFO: 10.16.37.13:38714 - "GET /health HTTP/1.1" 200 OK
|
| 42 |
+
INFO: 2025-12-13T12:57:25 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 43 |
+
INFO: 2025-12-13T12:57:25 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 44 |
+
INFO: 10.16.37.13:27734 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions HTTP/1.1" 200 OK
|
| 45 |
+
INFO: 2025-12-13T12:57:25 - app.services.ticket_service: Listed 6 tickets (total: 6) for user 43b778b0-2062-4724-abbb-916a4835a9b0
|
| 46 |
+
INFO: 10.16.13.79:21909 - "GET /api/v1/tickets?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page=1&page_size=50&status=open%2Cpending_review HTTP/1.1" 200 OK
|
| 47 |
+
INFO: 10.16.13.79:27642 - "GET /api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&status=open%2Cpending_review HTTP/1.1" 200 OK
|
| 48 |
+
INFO: 2025-12-13T12:57:28 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 49 |
+
INFO: 2025-12-13T12:57:28 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 50 |
+
INFO: 2025-12-13T12:57:28 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user 43b778b0-2062-4724-abbb-916a4835a9b0 - building fresh data
|
| 51 |
+
INFO: 2025-12-13T12:57:28 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 52 |
+
INFO: 10.16.37.13:31959 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
|
| 53 |
+
INFO: 10.16.37.13:31959 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 54 |
+
INFO: 10.16.13.79:34657 - "GET /health HTTP/1.1" 200 OK
|
| 55 |
+
INFO: 2025-12-13T12:57:55 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 56 |
+
INFO: 2025-12-13T12:57:55 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 57 |
+
INFO: 10.16.37.13:16488 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 58 |
+
INFO: 2025-12-13T12:57:56 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 59 |
+
INFO: 2025-12-13T12:57:56 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 60 |
+
INFO: 10.16.37.13:16488 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 61 |
+
INFO: 2025-12-13T12:57:56 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 62 |
+
INFO: 2025-12-13T12:57:56 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 63 |
+
INFO: 10.16.13.79:34657 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 64 |
+
INFO: 10.16.37.13:16488 - "GET /api/v1/tickets/11367b6d-6d4e-435f-9c8e-f03ae90d429e/detail HTTP/1.1" 200 OK
|
| 65 |
+
INFO: 10.16.13.79:34657 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 66 |
+
INFO: 10.16.37.13:23615 - "GET /health HTTP/1.1" 200 OK
|
| 67 |
+
INFO: 10.16.13.79:24227 - "GET /health HTTP/1.1" 200 OK
|
| 68 |
+
INFO: 10.16.37.13:12926 - "GET /health HTTP/1.1" 200 OK
|
| 69 |
+
INFO: 10.16.13.79:9571 - "GET /health HTTP/1.1" 200 OK
|
| 70 |
+
INFO: 10.16.13.79:23058 - "GET /health HTTP/1.1" 200 OK
|
| 71 |
+
INFO: 2025-12-13T13:02:26 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 72 |
+
INFO: 2025-12-13T13:02:26 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 73 |
+
INFO: 2025-12-13T13:02:26 - app.services.dashboard_service: Dashboard cache HIT for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user 43b778b0-2062-4724-abbb-916a4835a9b0
|
| 74 |
+
INFO: 10.16.37.13:38998 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
|
| 75 |
+
INFO: 10.16.37.13:48026 - "GET /api/v1/tickets/2de41ce7-dff1-4151-9710-87958d18b5c4/detail HTTP/1.1" 200 OK
|
| 76 |
+
INFO: 10.16.13.79:31516 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/4cd27765-5720-4cc0-872e-bf0da3cd1898 HTTP/1.1" 200 OK
|
| 77 |
+
INFO: 10.16.37.13:49675 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
|
| 78 |
+
INFO: 10.16.13.79:43107 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 79 |
+
INFO: 10.16.13.79:8275 - "GET /health HTTP/1.1" 200 OK
|
| 80 |
+
INFO: 10.16.13.79:13891 - "GET /health HTTP/1.1" 200 OK
|
| 81 |
+
INFO: 10.16.13.79:25629 - "GET /health HTTP/1.1" 200 OK
|
| 82 |
+
INFO: 10.16.37.13:43291 - "GET /health HTTP/1.1" 200 OK
|
| 83 |
+
INFO: 10.16.13.79:32273 - "GET /health HTTP/1.1" 200 OK
|
| 84 |
+
INFO: 10.16.37.13:62668 - "GET /health HTTP/1.1" 200 OK
|
| 85 |
+
INFO: 2025-12-13T13:08:32 - app.core.supabase_auth: Session refreshed successfully
|
| 86 |
+
INFO: 2025-12-13T13:08:32 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 87 |
+
INFO: 10.16.37.13:59966 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 88 |
+
INFO: 2025-12-13T13:10:22 - app.core.supabase_auth: Session refreshed successfully
|
| 89 |
+
INFO: 2025-12-13T13:10:22 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 90 |
+
INFO: 10.16.37.13:12201 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 91 |
+
INFO: 10.16.13.79:19406 - "GET /health HTTP/1.1" 200 OK
|
| 92 |
+
INFO: 10.16.37.13:65090 - "GET /health HTTP/1.1" 200 OK
|
| 93 |
+
INFO: 10.16.13.79:55398 - "GET /health HTTP/1.1" 200 OK
|
| 94 |
+
INFO: 10.16.37.13:8205 - "GET /health HTTP/1.1" 200 OK
|
| 95 |
+
INFO: 10.16.13.79:4569 - "GET /health HTTP/1.1" 200 OK
|
| 96 |
+
INFO: 10.16.37.13:46876 - "GET /health HTTP/1.1" 200 OK
|
| 97 |
+
INFO: 10.16.13.79:2648 - "GET /health HTTP/1.1" 200 OK
|
| 98 |
+
INFO: 10.16.37.13:21839 - "GET /health HTTP/1.1" 200 OK
|
| 99 |
+
INFO: 10.16.13.79:49883 - "GET /health HTTP/1.1" 200 OK
|
| 100 |
+
INFO: 10.16.37.13:56870 - "GET /health HTTP/1.1" 200 OK
|
| 101 |
+
INFO: 10.16.13.79:44817 - "GET /health HTTP/1.1" 200 OK
|
| 102 |
+
INFO: 10.16.37.13:21731 - "GET /health HTTP/1.1" 200 OK
|
| 103 |
+
INFO: 10.16.37.13:8029 - "GET /health HTTP/1.1" 200 OK
|
| 104 |
+
INFO: 10.16.37.13:20594 - "GET / HTTP/1.1" 200 OK
|
| 105 |
+
INFO: 10.16.13.79:7048 - "GET /health HTTP/1.1" 200 OK
|
| 106 |
+
INFO: 10.16.13.79:52634 - "GET /health HTTP/1.1" 200 OK
|
| 107 |
+
INFO: 10.16.37.13:30693 - "GET /health HTTP/1.1" 200 OK
|
| 108 |
+
INFO: 10.16.13.79:6778 - "GET /health HTTP/1.1" 200 OK
|
| 109 |
+
INFO: 10.16.37.13:15178 - "GET /health HTTP/1.1" 200 OK
|
| 110 |
+
INFO: 10.16.37.13:15178 - "GET /health HTTP/1.1" 200 OK
|
| 111 |
+
INFO: 10.16.37.13:48211 - "GET /health HTTP/1.1" 200 OK
|
| 112 |
+
INFO: 10.16.13.79:62244 - "GET /health HTTP/1.1" 200 OK
|
| 113 |
+
INFO: 10.16.37.13:11095 - "GET /health HTTP/1.1" 200 OK
|
| 114 |
+
INFO: 10.16.13.79:35135 - "GET /health HTTP/1.1" 200 OK
|
| 115 |
+
INFO: 2025-12-13T14:03:33 - app.core.supabase_auth: Session refreshed successfully
|
| 116 |
+
INFO: 2025-12-13T14:03:33 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 117 |
+
INFO: 10.16.37.13:40505 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 118 |
+
INFO: 2025-12-13T14:05:23 - app.core.supabase_auth: Session refreshed successfully
|
| 119 |
+
INFO: 2025-12-13T14:05:23 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 120 |
+
INFO: 10.16.13.79:30326 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 121 |
+
INFO: 10.16.13.79:40787 - "GET /health HTTP/1.1" 200 OK
|
| 122 |
+
INFO: 10.16.37.13:41666 - "GET /health HTTP/1.1" 200 OK
|
| 123 |
+
INFO: 10.16.13.79:36662 - "GET /health HTTP/1.1" 200 OK
|
| 124 |
+
INFO: 10.16.37.13:58513 - "GET /health HTTP/1.1" 200 OK
|
| 125 |
+
INFO: 10.16.37.13:4072 - "GET /health HTTP/1.1" 200 OK
|
| 126 |
+
INFO: 10.16.13.79:7100 - "GET /health HTTP/1.1" 200 OK
|
| 127 |
+
INFO: 10.16.37.13:14145 - "GET /health HTTP/1.1" 200 OK
|
| 128 |
+
INFO: 10.16.13.79:9218 - "GET /health HTTP/1.1" 200 OK
|
| 129 |
+
INFO: 10.16.37.13:26994 - "GET /health HTTP/1.1" 200 OK
|
| 130 |
+
INFO: 10.16.13.79:45806 - "GET /health HTTP/1.1" 200 OK
|
| 131 |
+
INFO: 10.16.13.79:41985 - "GET /health HTTP/1.1" 200 OK
|
| 132 |
+
INFO: 10.16.37.13:34750 - "GET /health HTTP/1.1" 200 OK
|
| 133 |
+
INFO: 10.16.13.79:37177 - "GET /health HTTP/1.1" 200 OK
|
| 134 |
+
INFO: 10.16.13.79:49565 - "GET /health HTTP/1.1" 200 OK
|
| 135 |
+
INFO: 10.16.37.13:45390 - "GET /health HTTP/1.1" 200 OK
|
| 136 |
+
INFO: 10.16.13.79:51042 - "GET /health HTTP/1.1" 200 OK
|
| 137 |
+
INFO: 10.16.37.13:27460 - "GET /health HTTP/1.1" 200 OK
|
| 138 |
+
INFO: 10.16.13.79:13115 - "GET /health HTTP/1.1" 200 OK
|
| 139 |
+
INFO: 10.16.37.13:23299 - "GET /health HTTP/1.1" 200 OK
|
| 140 |
+
INFO: 10.16.37.13:10751 - "GET /health HTTP/1.1" 200 OK
|
| 141 |
+
INFO: 10.16.37.13:16426 - "GET /health HTTP/1.1" 200 OK
|
| 142 |
+
INFO: 10.16.37.13:8028 - "GET /health HTTP/1.1" 200 OK
|
| 143 |
+
INFO: 2025-12-13T14:58:35 - app.core.supabase_auth: Session refreshed successfully
|
| 144 |
+
INFO: 2025-12-13T14:58:35 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 145 |
+
INFO: 10.16.37.13:52842 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 146 |
+
INFO: 2025-12-13T15:00:25 - app.core.supabase_auth: Session refreshed successfully
|
| 147 |
+
INFO: 2025-12-13T15:00:25 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 148 |
+
INFO: 10.16.37.13:55158 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 149 |
+
INFO: 10.16.37.13:27321 - "GET /health HTTP/1.1" 200 OK
|
| 150 |
+
INFO: 10.16.37.13:1867 - "GET /health HTTP/1.1" 200 OK
|
| 151 |
+
INFO: 10.16.13.79:47834 - "GET /health HTTP/1.1" 200 OK
|
| 152 |
+
INFO: 10.16.13.79:22727 - "GET /health HTTP/1.1" 200 OK
|
| 153 |
+
INFO: 10.16.13.79:27213 - "GET /health HTTP/1.1" 200 OK
|
| 154 |
+
INFO: 10.16.37.13:29666 - "GET /health HTTP/1.1" 200 OK
|
| 155 |
+
INFO: 10.16.13.79:20455 - "GET /health HTTP/1.1" 200 OK
|
| 156 |
+
INFO: 10.16.37.13:27046 - "GET /health HTTP/1.1" 200 OK
|
| 157 |
+
INFO: 10.16.37.13:11604 - "GET /health HTTP/1.1" 200 OK
|
| 158 |
+
INFO: 10.16.37.13:47785 - "GET /health HTTP/1.1" 200 OK
|
| 159 |
+
INFO: 10.16.37.13:18832 - "GET /health HTTP/1.1" 200 OK
|
| 160 |
+
INFO: 10.16.37.13:25430 - "GET /health HTTP/1.1" 200 OK
|
| 161 |
+
INFO: 10.16.25.209:32335 - "GET /health HTTP/1.1" 200 OK
|
| 162 |
+
INFO: 10.16.25.209:62197 - "GET /health HTTP/1.1" 200 OK
|
| 163 |
+
INFO: 10.16.37.13:30824 - "GET /health HTTP/1.1" 200 OK
|
| 164 |
+
INFO: 10.16.25.209:34056 - "GET /health HTTP/1.1" 200 OK
|
| 165 |
+
INFO: 10.16.43.133:50034 - "GET /health HTTP/1.1" 200 OK
|
| 166 |
+
INFO: 10.16.34.155:10830 - "GET /health HTTP/1.1" 200 OK
|
| 167 |
+
INFO: 10.16.13.79:13914 - "GET /health HTTP/1.1" 200 OK
|
| 168 |
+
INFO: 10.16.13.79:13914 - "GET /health HTTP/1.1" 200 OK
|
| 169 |
+
INFO: 10.16.13.79:2493 - "GET /health HTTP/1.1" 200 OK
|
| 170 |
+
INFO: 10.16.37.13:54532 - "GET /health HTTP/1.1" 200 OK
|
| 171 |
+
INFO: 2025-12-13T15:53:39 - app.core.supabase_auth: Session refreshed successfully
|
| 172 |
+
INFO: 2025-12-13T15:53:39 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 173 |
+
INFO: 10.16.13.79:17752 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 174 |
+
INFO: 2025-12-13T15:55:28 - app.core.supabase_auth: Session refreshed successfully
|
| 175 |
+
INFO: 2025-12-13T15:55:28 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 176 |
+
INFO: 10.16.37.13:60661 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 177 |
+
INFO: 10.16.37.13:11024 - "GET /health HTTP/1.1" 200 OK
|
| 178 |
+
INFO: 10.16.37.13:11024 - "GET /health HTTP/1.1" 200 OK
|
| 179 |
+
INFO: 10.16.37.13:30475 - "GET /health HTTP/1.1" 200 OK
|
| 180 |
+
INFO: 10.16.13.79:4141 - "GET /health HTTP/1.1" 200 OK
|
| 181 |
+
INFO: 10.16.43.133:58702 - "GET /health HTTP/1.1" 200 OK
|
| 182 |
+
INFO: 10.16.37.13:52256 - "GET /health HTTP/1.1" 200 OK
|
| 183 |
+
INFO: 10.16.25.209:25427 - "GET /health HTTP/1.1" 200 OK
|
| 184 |
+
INFO: 10.16.12.109:56027 - "GET /health HTTP/1.1" 200 OK
|
| 185 |
+
INFO: 10.16.34.155:24827 - "GET /health HTTP/1.1" 200 OK
|
| 186 |
+
INFO: 10.16.13.79:48542 - "GET /health HTTP/1.1" 200 OK
|
| 187 |
+
INFO: 10.16.25.209:13105 - "GET /health HTTP/1.1" 200 OK
|
| 188 |
+
INFO: 10.16.43.133:64961 - "GET /health HTTP/1.1" 200 OK
|
| 189 |
+
INFO: 10.16.26.144:65459 - "GET /health HTTP/1.1" 200 OK
|
| 190 |
+
INFO: 10.16.25.209:23419 - "GET /health HTTP/1.1" 200 OK
|
| 191 |
+
INFO: 10.16.25.209:2882 - "GET /health HTTP/1.1" 200 OK
|
| 192 |
+
INFO: 10.16.34.155:41788 - "GET /health HTTP/1.1" 200 OK
|
| 193 |
+
INFO: 10.16.26.144:35006 - "GET /health HTTP/1.1" 200 OK
|
| 194 |
+
INFO: 10.16.13.79:28932 - "GET /health HTTP/1.1" 200 OK
|
| 195 |
+
INFO: 10.16.37.13:13169 - "GET /health HTTP/1.1" 200 OK
|
| 196 |
+
INFO: 10.16.12.109:4373 - "GET /health HTTP/1.1" 200 OK
|
| 197 |
+
INFO: 10.16.43.133:26893 - "GET /health HTTP/1.1" 200 OK
|
| 198 |
+
INFO: 10.16.12.109:35287 - "GET /health HTTP/1.1" 200 OK
|
| 199 |
+
INFO: 2025-12-13T16:48:42 - app.core.supabase_auth: Session refreshed successfully
|
| 200 |
+
INFO: 2025-12-13T16:48:42 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 201 |
+
INFO: 10.16.34.155:15127 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 202 |
+
INFO: 2025-12-13T16:50:31 - app.core.supabase_auth: Session refreshed successfully
|
| 203 |
+
INFO: 2025-12-13T16:50:31 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 204 |
+
INFO: 10.16.12.109:64741 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 205 |
+
INFO: 10.16.12.109:24653 - "GET /health HTTP/1.1" 200 OK
|
| 206 |
+
INFO: 10.16.34.155:61079 - "GET /health HTTP/1.1" 200 OK
|
| 207 |
+
INFO: 10.16.37.13:15131 - "GET /health HTTP/1.1" 200 OK
|
| 208 |
+
INFO: 10.16.12.109:17959 - "GET /health HTTP/1.1" 200 OK
|
| 209 |
+
INFO: 10.16.43.133:39086 - "GET /health HTTP/1.1" 200 OK
|
| 210 |
+
INFO: 10.16.43.133:39086 - "GET /health HTTP/1.1" 200 OK
|
| 211 |
+
INFO: 10.16.13.79:42431 - "GET /health HTTP/1.1" 200 OK
|
| 212 |
+
INFO: 10.16.43.133:25824 - "GET /health HTTP/1.1" 200 OK
|
| 213 |
+
INFO: 10.16.43.133:62954 - "GET /health HTTP/1.1" 200 OK
|
| 214 |
+
INFO: 10.16.13.79:3510 - "GET /health HTTP/1.1" 200 OK
|
| 215 |
+
INFO: 10.16.25.209:23492 - "GET /health HTTP/1.1" 200 OK
|
| 216 |
+
INFO: 10.16.13.79:45718 - "GET /health HTTP/1.1" 200 OK
|
| 217 |
+
INFO: 10.16.25.209:2620 - "GET /health HTTP/1.1" 200 OK
|
| 218 |
+
INFO: 10.16.25.209:2620 - "GET /health HTTP/1.1" 200 OK
|
| 219 |
+
INFO: 10.16.13.79:28774 - "GET /health HTTP/1.1" 200 OK
|
| 220 |
+
INFO: 10.16.13.79:28774 - "GET /health HTTP/1.1" 200 OK
|
| 221 |
+
INFO: 10.16.13.79:14907 - "GET /health HTTP/1.1" 200 OK
|
| 222 |
+
INFO: 10.16.13.79:13703 - "GET /health HTTP/1.1" 200 OK
|
| 223 |
+
INFO: 10.16.13.79:36362 - "GET /health HTTP/1.1" 200 OK
|
| 224 |
+
INFO: 10.16.13.79:36362 - "GET /health HTTP/1.1" 200 OK
|
| 225 |
+
INFO: 10.16.13.79:24702 - "GET /health HTTP/1.1" 200 OK
|
| 226 |
+
INFO: 10.16.25.209:24975 - "GET /health HTTP/1.1" 200 OK
|
| 227 |
+
INFO: 2025-12-13T17:43:47 - app.core.supabase_auth: Session refreshed successfully
|
| 228 |
+
INFO: 2025-12-13T17:43:47 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 229 |
+
INFO: 10.16.13.79:39668 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 230 |
+
INFO: 2025-12-13T17:47:10 - app.core.supabase_auth: Session refreshed successfully
|
| 231 |
+
INFO: 2025-12-13T17:47:10 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 232 |
+
INFO: 10.16.13.79:27078 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 233 |
+
INFO: 10.16.13.79:63773 - "GET /health HTTP/1.1" 200 OK
|
| 234 |
+
INFO: 10.16.13.79:63773 - "GET /health HTTP/1.1" 200 OK
|
| 235 |
+
INFO: 10.16.25.209:12326 - "GET /health HTTP/1.1" 200 OK
|
| 236 |
+
INFO: 10.16.13.79:44150 - "GET /health HTTP/1.1" 200 OK
|
| 237 |
+
INFO: 10.16.25.209:54428 - "GET /health HTTP/1.1" 200 OK
|
| 238 |
+
INFO: 10.16.13.79:28075 - "GET /health HTTP/1.1" 200 OK
|
| 239 |
+
INFO: 10.16.13.79:30097 - "GET /health HTTP/1.1" 200 OK
|
| 240 |
+
INFO: 10.16.25.209:53598 - "GET /health HTTP/1.1" 200 OK
|
| 241 |
+
INFO: 10.16.25.209:21028 - "GET /health HTTP/1.1" 200 OK
|
| 242 |
+
INFO: 10.16.13.79:36516 - "GET /health HTTP/1.1" 200 OK
|
| 243 |
+
INFO: 10.16.13.79:18077 - "GET /health HTTP/1.1" 200 OK
|
| 244 |
+
INFO: 10.16.25.209:1527 - "GET /health HTTP/1.1" 200 OK
|
| 245 |
+
INFO: 10.16.13.79:13070 - "GET /health HTTP/1.1" 200 OK
|
| 246 |
+
INFO: 10.16.25.209:1561 - "GET /health HTTP/1.1" 200 OK
|
| 247 |
+
INFO: 10.16.25.209:2324 - "GET /health HTTP/1.1" 200 OK
|
| 248 |
+
INFO: 10.16.13.79:21267 - "GET /health HTTP/1.1" 200 OK
|
| 249 |
+
INFO: 10.16.13.79:42246 - "GET /health HTTP/1.1" 200 OK
|
| 250 |
+
INFO: 10.16.25.209:63529 - "GET /health HTTP/1.1" 200 OK
|
| 251 |
+
INFO: 10.16.25.209:23584 - "GET /health HTTP/1.1" 200 OK
|
| 252 |
+
INFO: 10.16.25.209:23584 - "GET /health HTTP/1.1" 200 OK
|
| 253 |
+
INFO: 10.16.25.209:35525 - "GET /health HTTP/1.1" 200 OK
|
| 254 |
+
INFO: 10.16.25.209:35525 - "GET /health HTTP/1.1" 200 OK
|
| 255 |
+
INFO: 2025-12-13T18:38:49 - app.core.supabase_auth: Session refreshed successfully
|
| 256 |
+
INFO: 2025-12-13T18:38:49 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 257 |
+
INFO: 10.16.25.209:52027 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 258 |
+
INFO: 2025-12-13T18:42:16 - app.core.supabase_auth: Session refreshed successfully
|
| 259 |
+
INFO: 2025-12-13T18:42:16 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 260 |
+
INFO: 10.16.25.209:59451 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 261 |
+
INFO: 10.16.25.209:41454 - "GET /health HTTP/1.1" 200 OK
|
| 262 |
+
INFO: 10.16.13.79:20769 - "GET /health HTTP/1.1" 200 OK
|
| 263 |
+
INFO: 10.16.13.79:31662 - "GET /health HTTP/1.1" 200 OK
|
| 264 |
+
INFO: 10.16.13.79:31662 - "GET /health HTTP/1.1" 200 OK
|
| 265 |
+
INFO: 10.16.25.209:46801 - "GET /health HTTP/1.1" 200 OK
|
| 266 |
+
INFO: 10.16.13.79:34337 - "GET /health HTTP/1.1" 200 OK
|
| 267 |
+
INFO: 10.16.13.79:48402 - "GET /health HTTP/1.1" 200 OK
|
| 268 |
+
INFO: 10.16.13.79:48402 - "GET /health HTTP/1.1" 200 OK
|
| 269 |
+
INFO: 10.16.25.209:24273 - "GET /health HTTP/1.1" 200 OK
|
| 270 |
+
INFO: 10.16.13.79:58850 - "GET /health HTTP/1.1" 200 OK
|
| 271 |
+
INFO: 10.16.25.209:27187 - "GET /health HTTP/1.1" 200 OK
|
| 272 |
+
INFO: 10.16.13.79:55276 - "GET /health HTTP/1.1" 200 OK
|
| 273 |
+
INFO: 10.16.25.209:63615 - "GET /health HTTP/1.1" 200 OK
|
| 274 |
+
INFO: 10.16.13.79:57477 - "GET /health HTTP/1.1" 200 OK
|
| 275 |
+
INFO: 10.16.13.79:37547 - "GET /health HTTP/1.1" 200 OK
|
| 276 |
+
INFO: 10.16.25.209:34629 - "GET /health HTTP/1.1" 200 OK
|
| 277 |
+
INFO: 10.16.13.79:61278 - "GET /health HTTP/1.1" 200 OK
|
| 278 |
+
INFO: 10.16.25.209:46661 - "GET /health HTTP/1.1" 200 OK
|
| 279 |
+
INFO: 10.16.13.79:58454 - "GET /health HTTP/1.1" 200 OK
|
| 280 |
+
INFO: 10.16.13.79:31996 - "GET /health HTTP/1.1" 200 OK
|
| 281 |
+
INFO: 10.16.13.79:22755 - "GET /health HTTP/1.1" 200 OK
|
| 282 |
+
INFO: 10.16.25.209:9555 - "GET /health HTTP/1.1" 200 OK
|
| 283 |
+
INFO: 2025-12-13T19:33:51 - app.core.supabase_auth: Session refreshed successfully
|
| 284 |
+
INFO: 2025-12-13T19:33:51 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 285 |
+
INFO: 10.16.25.209:28089 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 286 |
+
INFO: 2025-12-13T19:37:16 - app.core.supabase_auth: Session refreshed successfully
|
| 287 |
+
INFO: 2025-12-13T19:37:17 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 288 |
+
INFO: 10.16.25.209:17105 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 289 |
+
INFO: 10.16.25.209:11790 - "GET /health HTTP/1.1" 200 OK
|
| 290 |
+
INFO: 10.16.25.209:11790 - "GET /health HTTP/1.1" 200 OK
|
| 291 |
+
INFO: 10.16.13.79:57906 - "GET /health HTTP/1.1" 200 OK
|
| 292 |
+
INFO: 10.16.13.79:57906 - "GET /health HTTP/1.1" 200 OK
|
| 293 |
+
INFO: 10.16.25.209:57794 - "GET /health HTTP/1.1" 200 OK
|
| 294 |
+
INFO: 10.16.25.209:57794 - "GET /health HTTP/1.1" 200 OK
|
| 295 |
+
INFO: 10.16.13.79:51940 - "GET /health HTTP/1.1" 200 OK
|
| 296 |
+
INFO: 10.16.25.209:31296 - "GET /health HTTP/1.1" 200 OK
|
| 297 |
+
INFO: 10.16.13.79:33251 - "GET /health HTTP/1.1" 200 OK
|
| 298 |
+
INFO: 10.16.13.79:38330 - "GET /health HTTP/1.1" 200 OK
|
| 299 |
+
INFO: 10.16.25.209:26645 - "GET /health HTTP/1.1" 200 OK
|
| 300 |
+
INFO: 10.16.13.79:41717 - "GET /health HTTP/1.1" 200 OK
|
| 301 |
+
INFO: 10.16.13.79:58821 - "GET /health HTTP/1.1" 200 OK
|
| 302 |
+
INFO: 10.16.13.79:12900 - "GET /health HTTP/1.1" 200 OK
|
| 303 |
+
INFO: 10.16.13.79:10816 - "GET /health HTTP/1.1" 200 OK
|
| 304 |
+
INFO: 10.16.13.79:10816 - "GET /health HTTP/1.1" 200 OK
|
| 305 |
+
INFO: 10.16.13.79:1252 - "GET /health HTTP/1.1" 200 OK
|
| 306 |
+
INFO: 10.16.25.209:22828 - "GET /health HTTP/1.1" 200 OK
|
| 307 |
+
INFO: 10.16.13.79:2455 - "GET /health HTTP/1.1" 200 OK
|
| 308 |
+
INFO: 10.16.25.209:3087 - "GET /health HTTP/1.1" 200 OK
|
| 309 |
+
INFO: 10.16.25.209:58285 - "GET /health HTTP/1.1" 200 OK
|
| 310 |
+
INFO: 10.16.13.79:19162 - "GET /health HTTP/1.1" 200 OK
|
| 311 |
+
INFO: 2025-12-13T20:28:53 - app.core.supabase_auth: Session refreshed successfully
|
| 312 |
+
INFO: 2025-12-13T20:28:53 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 313 |
+
INFO: 10.16.13.79:37066 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 314 |
+
INFO: 2025-12-13T20:32:18 - app.core.supabase_auth: Session refreshed successfully
|
| 315 |
+
INFO: 2025-12-13T20:32:18 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 316 |
+
INFO: 10.16.13.79:47974 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 317 |
+
INFO: 10.16.25.209:48751 - "GET /health HTTP/1.1" 200 OK
|
| 318 |
+
INFO: 10.16.25.209:48751 - "GET /health HTTP/1.1" 200 OK
|
| 319 |
+
INFO: 10.16.13.79:60731 - "GET /health HTTP/1.1" 200 OK
|
| 320 |
+
INFO: 10.16.13.79:60731 - "GET /health HTTP/1.1" 200 OK
|
| 321 |
+
INFO: 10.16.25.209:45857 - "GET /health HTTP/1.1" 200 OK
|
| 322 |
+
INFO: 10.16.13.79:36867 - "GET /health HTTP/1.1" 200 OK
|
| 323 |
+
INFO: 10.16.25.209:57039 - "GET /health HTTP/1.1" 200 OK
|
| 324 |
+
INFO: 10.16.13.79:50358 - "GET /health HTTP/1.1" 200 OK
|
| 325 |
+
INFO: 10.16.13.79:1444 - "GET /health HTTP/1.1" 200 OK
|
| 326 |
+
INFO: 10.16.13.79:40873 - "GET /health HTTP/1.1" 200 OK
|
| 327 |
+
INFO: 10.16.25.209:11575 - "GET /health HTTP/1.1" 200 OK
|
| 328 |
+
INFO: 10.16.13.79:12310 - "GET /health HTTP/1.1" 200 OK
|
| 329 |
+
INFO: 10.16.25.209:34941 - "GET /health HTTP/1.1" 200 OK
|
| 330 |
+
INFO: 10.16.25.209:17143 - "GET /health HTTP/1.1" 200 OK
|
| 331 |
+
INFO: 10.16.25.209:55437 - "GET /health HTTP/1.1" 200 OK
|
| 332 |
+
INFO: 10.16.13.79:32607 - "GET /health HTTP/1.1" 200 OK
|
| 333 |
+
INFO: 10.16.25.209:20210 - "GET /health HTTP/1.1" 200 OK
|
| 334 |
+
INFO: 10.16.13.79:31708 - "GET /health HTTP/1.1" 200 OK
|
| 335 |
+
INFO: 10.16.13.79:46814 - "GET /health HTTP/1.1" 200 OK
|
| 336 |
+
INFO: 10.16.13.79:46814 - "GET /health HTTP/1.1" 200 OK
|
| 337 |
+
INFO: 10.16.13.79:53420 - "GET /health HTTP/1.1" 200 OK
|
| 338 |
+
INFO: 10.16.13.79:54527 - "GET /health HTTP/1.1" 200 OK
|
| 339 |
+
INFO: 2025-12-13T21:23:55 - app.core.supabase_auth: Session refreshed successfully
|
| 340 |
+
INFO: 2025-12-13T21:23:56 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 341 |
+
INFO: 10.16.13.79:21627 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 342 |
+
INFO: 2025-12-13T21:27:19 - app.core.supabase_auth: Session refreshed successfully
|
| 343 |
+
INFO: 2025-12-13T21:27:19 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 344 |
+
INFO: 10.16.13.79:54836 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 345 |
+
INFO: 10.16.13.79:62235 - "GET /health HTTP/1.1" 200 OK
|
| 346 |
+
INFO: 10.16.13.79:62235 - "GET /health HTTP/1.1" 200 OK
|
| 347 |
+
INFO: 10.16.25.209:18012 - "GET /health HTTP/1.1" 200 OK
|
| 348 |
+
INFO: 10.16.25.209:18012 - "GET /health HTTP/1.1" 200 OK
|
| 349 |
+
INFO: 10.16.13.79:62153 - "GET /health HTTP/1.1" 200 OK
|
| 350 |
+
INFO: 10.16.25.209:8992 - "GET /health HTTP/1.1" 200 OK
|
| 351 |
+
INFO: 10.16.25.209:51249 - "GET /health HTTP/1.1" 200 OK
|
| 352 |
+
INFO: 10.16.13.79:26005 - "GET /health HTTP/1.1" 200 OK
|
| 353 |
+
INFO: 10.16.25.209:40668 - "GET /health HTTP/1.1" 200 OK
|
| 354 |
+
INFO: 10.16.25.209:40668 - "GET /health HTTP/1.1" 200 OK
|
| 355 |
+
INFO: 10.16.25.209:53751 - "GET /health HTTP/1.1" 200 OK
|
| 356 |
+
INFO: 10.16.13.79:59803 - "GET /health HTTP/1.1" 200 OK
|
| 357 |
+
INFO: 10.16.13.79:11206 - "GET /health HTTP/1.1" 200 OK
|
| 358 |
+
INFO: 10.16.13.79:31073 - "GET /health HTTP/1.1" 200 OK
|
| 359 |
+
INFO: 10.16.13.79:29431 - "GET /health HTTP/1.1" 200 OK
|
| 360 |
+
INFO: 10.16.25.209:28394 - "GET /health HTTP/1.1" 200 OK
|
| 361 |
+
INFO: 10.16.25.209:52548 - "GET /health HTTP/1.1" 200 OK
|
| 362 |
+
INFO: 10.16.25.209:52548 - "GET /health HTTP/1.1" 200 OK
|
| 363 |
+
INFO: 10.16.13.79:7117 - "GET /health HTTP/1.1" 200 OK
|
| 364 |
+
INFO: 10.16.13.79:50455 - "GET /health HTTP/1.1" 200 OK
|
| 365 |
+
INFO: 10.16.25.209:27097 - "GET /health HTTP/1.1" 200 OK
|
| 366 |
+
INFO: 10.16.37.13:2044 - "GET /health HTTP/1.1" 200 OK
|
| 367 |
+
INFO: 2025-12-13T22:18:57 - app.core.supabase_auth: Session refreshed successfully
|
| 368 |
+
INFO: 2025-12-13T22:18:57 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 369 |
+
INFO: 10.16.25.209:50268 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 370 |
+
INFO: 2025-12-13T22:22:21 - app.core.supabase_auth: Session refreshed successfully
|
| 371 |
+
INFO: 2025-12-13T22:22:21 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 372 |
+
INFO: 10.16.37.13:51054 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 373 |
+
INFO: 10.16.13.79:42182 - "GET /health HTTP/1.1" 200 OK
|
| 374 |
+
INFO: 10.16.37.13:10081 - "GET /health HTTP/1.1" 200 OK
|
| 375 |
+
INFO: 10.16.13.79:14204 - "GET /health HTTP/1.1" 200 OK
|
| 376 |
+
INFO: 10.16.25.209:28578 - "GET /health HTTP/1.1" 200 OK
|
| 377 |
+
INFO: 10.16.25.209:42365 - "GET /health HTTP/1.1" 200 OK
|
| 378 |
+
INFO: 10.16.13.79:13104 - "GET /health HTTP/1.1" 200 OK
|
| 379 |
+
INFO: 10.16.13.79:14481 - "GET /health HTTP/1.1" 200 OK
|
| 380 |
+
INFO: 10.16.25.209:12483 - "GET /health HTTP/1.1" 200 OK
|
| 381 |
+
INFO: 10.16.25.209:6282 - "GET /health HTTP/1.1" 200 OK
|
| 382 |
+
INFO: 10.16.13.79:60750 - "GET /health HTTP/1.1" 200 OK
|
| 383 |
+
INFO: 10.16.25.209:9771 - "GET /health HTTP/1.1" 200 OK
|
| 384 |
+
INFO: 10.16.13.79:14860 - "GET /health HTTP/1.1" 200 OK
|
| 385 |
+
INFO: 10.16.25.209:62429 - "GET /health HTTP/1.1" 200 OK
|
| 386 |
+
INFO: 10.16.13.79:43744 - "GET /health HTTP/1.1" 200 OK
|
| 387 |
+
INFO: 10.16.25.209:65268 - "GET /health HTTP/1.1" 200 OK
|
| 388 |
+
INFO: 10.16.25.209:65268 - "GET /health HTTP/1.1" 200 OK
|
| 389 |
+
INFO: 10.16.13.79:56105 - "GET /health HTTP/1.1" 200 OK
|
| 390 |
+
INFO: 10.16.25.209:10662 - "GET /health HTTP/1.1" 200 OK
|
| 391 |
+
INFO: 10.16.25.209:13126 - "GET /health HTTP/1.1" 200 OK
|
| 392 |
+
INFO: 10.16.13.79:58672 - "GET /health HTTP/1.1" 200 OK
|
| 393 |
+
INFO: 10.16.13.79:45498 - "GET /health HTTP/1.1" 200 OK
|
| 394 |
+
INFO: 10.16.25.209:3140 - "GET /health HTTP/1.1" 200 OK
|
| 395 |
+
INFO: 2025-12-13T23:13:58 - app.core.supabase_auth: Session refreshed successfully
|
| 396 |
+
INFO: 2025-12-13T23:13:58 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 397 |
+
INFO: 10.16.13.79:45475 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 398 |
+
INFO: 2025-12-13T23:17:23 - app.core.supabase_auth: Session refreshed successfully
|
| 399 |
+
INFO: 2025-12-13T23:17:23 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 400 |
+
INFO: 10.16.25.209:55459 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 401 |
+
INFO: 10.16.25.209:13060 - "GET /health HTTP/1.1" 200 OK
|
| 402 |
+
INFO: 10.16.13.79:24525 - "GET /health HTTP/1.1" 200 OK
|
| 403 |
+
INFO: 10.16.25.209:39586 - "GET /health HTTP/1.1" 200 OK
|
| 404 |
+
INFO: 10.16.25.209:26668 - "GET /health HTTP/1.1" 200 OK
|
| 405 |
+
INFO: 10.16.25.209:27988 - "GET /health HTTP/1.1" 200 OK
|
| 406 |
+
INFO: 10.16.13.79:53037 - "GET /health HTTP/1.1" 200 OK
|
| 407 |
+
INFO: 10.16.13.79:4413 - "GET /health HTTP/1.1" 200 OK
|
| 408 |
+
INFO: 10.16.13.79:50561 - "GET /health HTTP/1.1" 200 OK
|
| 409 |
+
INFO: 10.16.25.209:13451 - "GET /health HTTP/1.1" 200 OK
|
| 410 |
+
INFO: 10.16.13.79:39935 - "GET /health HTTP/1.1" 200 OK
|
| 411 |
+
INFO: 10.16.25.209:43309 - "GET /health HTTP/1.1" 200 OK
|
| 412 |
+
INFO: 10.16.13.79:33392 - "GET /health HTTP/1.1" 200 OK
|
| 413 |
+
INFO: 10.16.25.209:11310 - "GET /health HTTP/1.1" 200 OK
|
| 414 |
+
INFO: 10.16.25.209:11310 - "GET /health HTTP/1.1" 200 OK
|
| 415 |
+
INFO: 10.16.25.209:57872 - "GET /health HTTP/1.1" 200 OK
|
| 416 |
+
INFO: 10.16.13.79:40296 - "GET /health HTTP/1.1" 200 OK
|
| 417 |
+
INFO: 10.16.25.209:36895 - "GET /health HTTP/1.1" 200 OK
|
| 418 |
+
INFO: 10.16.25.209:36895 - "GET /health HTTP/1.1" 200 OK
|
| 419 |
+
INFO: 10.16.25.209:48855 - "GET /health HTTP/1.1" 200 OK
|
| 420 |
+
INFO: 10.16.25.209:57752 - "GET /health HTTP/1.1" 200 OK
|
| 421 |
+
INFO: 10.16.13.79:37012 - "GET /health HTTP/1.1" 200 OK
|
| 422 |
+
INFO: 10.16.25.209:56139 - "GET /health HTTP/1.1" 200 OK
|
| 423 |
+
INFO: 2025-12-14T00:09:00 - app.core.supabase_auth: Session refreshed successfully
|
| 424 |
+
INFO: 2025-12-14T00:09:00 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 425 |
+
INFO: 10.16.25.209:8767 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 426 |
+
INFO: 2025-12-14T00:12:24 - app.core.supabase_auth: Session refreshed successfully
|
| 427 |
+
INFO: 2025-12-14T00:12:24 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 428 |
+
INFO: 10.16.13.79:64783 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 429 |
+
INFO: 10.16.25.209:53119 - "GET /health HTTP/1.1" 200 OK
|
| 430 |
+
INFO: 10.16.25.209:41358 - "GET /health HTTP/1.1" 200 OK
|
| 431 |
+
INFO: 10.16.13.79:51441 - "GET /health HTTP/1.1" 200 OK
|
| 432 |
+
INFO: 10.16.25.209:14578 - "GET /health HTTP/1.1" 200 OK
|
| 433 |
+
INFO: 10.16.13.79:56190 - "GET /health HTTP/1.1" 200 OK
|
| 434 |
+
INFO: 10.16.13.79:56190 - "GET /health HTTP/1.1" 200 OK
|
| 435 |
+
INFO: 10.16.25.209:42145 - "GET /health HTTP/1.1" 200 OK
|
| 436 |
+
INFO: 10.16.13.79:61338 - "GET /health HTTP/1.1" 200 OK
|
| 437 |
+
INFO: 10.16.13.79:4255 - "GET /health HTTP/1.1" 200 OK
|
| 438 |
+
INFO: 10.16.25.209:64454 - "GET /health HTTP/1.1" 200 OK
|
| 439 |
+
INFO: 10.16.25.209:41300 - "GET /health HTTP/1.1" 200 OK
|
| 440 |
+
INFO: 10.16.13.79:14703 - "GET /health HTTP/1.1" 200 OK
|
| 441 |
+
INFO: 10.16.25.209:37510 - "GET /health HTTP/1.1" 200 OK
|
| 442 |
+
INFO: 10.16.25.209:35956 - "GET /health HTTP/1.1" 200 OK
|
| 443 |
+
INFO: 10.16.25.209:20108 - "GET /health HTTP/1.1" 200 OK
|
| 444 |
+
INFO: 10.16.25.209:20108 - "GET /health HTTP/1.1" 200 OK
|
| 445 |
+
INFO: 10.16.13.79:6573 - "GET /health HTTP/1.1" 200 OK
|
| 446 |
+
INFO: 10.16.25.209:14014 - "GET /health HTTP/1.1" 200 OK
|
| 447 |
+
INFO: 10.16.13.79:12863 - "GET /health HTTP/1.1" 200 OK
|
| 448 |
+
INFO: 10.16.25.209:8007 - "GET /health HTTP/1.1" 200 OK
|
| 449 |
+
INFO: 10.16.13.79:25351 - "GET /health HTTP/1.1" 200 OK
|
| 450 |
+
INFO: 10.16.13.79:25351 - "GET /health HTTP/1.1" 200 OK
|
| 451 |
+
INFO: 2025-12-14T01:04:01 - app.core.supabase_auth: Session refreshed successfully
|
| 452 |
+
INFO: 2025-12-14T01:04:01 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 453 |
+
INFO: 10.16.13.79:21447 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 454 |
+
INFO: 2025-12-14T01:07:26 - app.core.supabase_auth: Session refreshed successfully
|
| 455 |
+
INFO: 2025-12-14T01:07:26 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 456 |
+
INFO: 10.16.25.209:37114 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 457 |
+
INFO: 10.16.25.209:39197 - "GET /health HTTP/1.1" 200 OK
|
| 458 |
+
INFO: 10.16.25.209:39197 - "GET /health HTTP/1.1" 200 OK
|
| 459 |
+
INFO: 10.16.13.79:34861 - "GET /health HTTP/1.1" 200 OK
|
| 460 |
+
INFO: 10.16.13.79:54181 - "GET /health HTTP/1.1" 200 OK
|
| 461 |
+
INFO: 10.16.25.209:36528 - "GET /health HTTP/1.1" 200 OK
|
| 462 |
+
INFO: 10.16.13.79:48768 - "GET /health HTTP/1.1" 200 OK
|
| 463 |
+
INFO: 10.16.13.79:13297 - "GET /health HTTP/1.1" 200 OK
|
| 464 |
+
INFO: 10.16.13.79:19939 - "GET /health HTTP/1.1" 200 OK
|
| 465 |
+
INFO: 10.16.13.79:9900 - "GET /health HTTP/1.1" 200 OK
|
| 466 |
+
INFO: 10.16.13.79:9900 - "GET /health HTTP/1.1" 200 OK
|
| 467 |
+
INFO: 10.16.25.209:25922 - "GET /health HTTP/1.1" 200 OK
|
| 468 |
+
INFO: 10.16.13.79:61271 - "GET /health HTTP/1.1" 200 OK
|
| 469 |
+
INFO: 10.16.25.209:20454 - "GET /health HTTP/1.1" 200 OK
|
| 470 |
+
INFO: 10.16.13.79:15836 - "GET /health HTTP/1.1" 200 OK
|
| 471 |
+
INFO: 10.16.25.209:48029 - "GET /health HTTP/1.1" 200 OK
|
| 472 |
+
INFO: 10.16.25.209:42336 - "GET /health HTTP/1.1" 200 OK
|
| 473 |
+
INFO: 10.16.13.79:33785 - "GET /health HTTP/1.1" 200 OK
|
| 474 |
+
INFO: 10.16.13.79:33785 - "GET /health HTTP/1.1" 200 OK
|
| 475 |
+
INFO: 10.16.13.79:15501 - "GET /health HTTP/1.1" 200 OK
|
| 476 |
+
INFO: 10.16.13.79:25679 - "GET /health HTTP/1.1" 200 OK
|
| 477 |
+
INFO: 10.16.13.79:35778 - "GET /health HTTP/1.1" 200 OK
|
| 478 |
+
INFO: 10.16.25.209:4766 - "GET /health HTTP/1.1" 200 OK
|
| 479 |
+
INFO: 2025-12-14T01:59:02 - app.core.supabase_auth: Session refreshed successfully
|
| 480 |
+
INFO: 2025-12-14T01:59:02 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 481 |
+
INFO: 10.16.25.209:34440 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 482 |
+
INFO: 2025-12-14T02:02:27 - app.core.supabase_auth: Session refreshed successfully
|
| 483 |
+
INFO: 2025-12-14T02:02:28 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 484 |
+
INFO: 10.16.25.209:3074 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 485 |
+
INFO: 10.16.13.79:51707 - "GET /health HTTP/1.1" 200 OK
|
| 486 |
+
INFO: 10.16.25.209:21756 - "GET /health HTTP/1.1" 200 OK
|
| 487 |
+
INFO: 10.16.25.209:10158 - "GET /health HTTP/1.1" 200 OK
|
| 488 |
+
INFO: 10.16.13.79:46560 - "GET /health HTTP/1.1" 200 OK
|
| 489 |
+
INFO: 10.16.13.79:7381 - "GET /health HTTP/1.1" 200 OK
|
| 490 |
+
INFO: 10.16.13.79:7381 - "GET /health HTTP/1.1" 200 OK
|
| 491 |
+
INFO: 10.16.25.209:20025 - "GET /health HTTP/1.1" 200 OK
|
| 492 |
+
INFO: 10.16.25.209:20025 - "GET /health HTTP/1.1" 200 OK
|
| 493 |
+
INFO: 10.16.25.209:40958 - "GET /health HTTP/1.1" 200 OK
|
| 494 |
+
INFO: 10.16.25.209:43957 - "GET /health HTTP/1.1" 200 OK
|
| 495 |
+
INFO: 10.16.25.209:29619 - "GET /health HTTP/1.1" 200 OK
|
| 496 |
+
INFO: 10.16.13.79:15299 - "GET /health HTTP/1.1" 200 OK
|
| 497 |
+
INFO: 10.16.25.209:19168 - "GET /health HTTP/1.1" 200 OK
|
| 498 |
+
INFO: 10.16.25.209:19168 - "GET /health HTTP/1.1" 200 OK
|
| 499 |
+
INFO: 10.16.25.209:16442 - "GET /health HTTP/1.1" 200 OK
|
| 500 |
+
INFO: 10.16.25.209:25750 - "GET /health HTTP/1.1" 200 OK
|
| 501 |
+
INFO: 10.16.13.79:61881 - "GET /health HTTP/1.1" 200 OK
|
| 502 |
+
INFO: 10.16.13.79:61881 - "GET /health HTTP/1.1" 200 OK
|
| 503 |
+
INFO: 10.16.25.209:45879 - "GET /health HTTP/1.1" 200 OK
|
| 504 |
+
INFO: 10.16.13.79:1424 - "GET /health HTTP/1.1" 200 OK
|
| 505 |
+
INFO: 10.16.25.209:40999 - "GET /health HTTP/1.1" 200 OK
|
| 506 |
+
INFO: 10.16.13.79:29570 - "GET /health HTTP/1.1" 200 OK
|
| 507 |
+
INFO: 2025-12-14T02:54:04 - app.core.supabase_auth: Session refreshed successfully
|
| 508 |
+
INFO: 2025-12-14T02:54:04 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 509 |
+
INFO: 10.16.13.79:61876 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 510 |
+
INFO: 2025-12-14T02:57:29 - app.core.supabase_auth: Session refreshed successfully
|
| 511 |
+
INFO: 2025-12-14T02:57:29 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 512 |
+
INFO: 10.16.13.79:61752 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 513 |
+
INFO: 10.16.25.209:55982 - "GET /health HTTP/1.1" 200 OK
|
| 514 |
+
INFO: 10.16.13.79:29919 - "GET /health HTTP/1.1" 200 OK
|
| 515 |
+
INFO: 10.16.25.209:45873 - "GET /health HTTP/1.1" 200 OK
|
| 516 |
+
INFO: 10.16.25.209:27177 - "GET /health HTTP/1.1" 200 OK
|
| 517 |
+
INFO: 10.16.25.209:25008 - "GET /health HTTP/1.1" 200 OK
|
| 518 |
+
INFO: 10.16.25.209:32462 - "GET /health HTTP/1.1" 200 OK
|
| 519 |
+
INFO: 10.16.25.209:51931 - "GET /health HTTP/1.1" 200 OK
|
| 520 |
+
INFO: 10.16.25.209:51931 - "GET /health HTTP/1.1" 200 OK
|
| 521 |
+
INFO: 10.16.13.79:18545 - "GET /health HTTP/1.1" 200 OK
|
| 522 |
+
INFO: 10.16.25.209:17056 - "GET /health HTTP/1.1" 200 OK
|
| 523 |
+
INFO: 10.16.25.209:12928 - "GET /health HTTP/1.1" 200 OK
|
| 524 |
+
INFO: 10.16.25.209:12928 - "GET /health HTTP/1.1" 200 OK
|
| 525 |
+
INFO: 10.16.13.79:43609 - "GET /health HTTP/1.1" 200 OK
|
| 526 |
+
INFO: 10.16.13.79:43609 - "GET /health HTTP/1.1" 200 OK
|
| 527 |
+
INFO: 10.16.25.209:48244 - "GET /health HTTP/1.1" 200 OK
|
| 528 |
+
INFO: 10.16.13.79:55027 - "GET /health HTTP/1.1" 200 OK
|
| 529 |
+
INFO: 10.16.25.209:1125 - "GET /health HTTP/1.1" 200 OK
|
| 530 |
+
INFO: 10.16.25.209:13336 - "GET /health HTTP/1.1" 200 OK
|
| 531 |
+
INFO: 10.16.13.79:37058 - "GET /health HTTP/1.1" 200 OK
|
| 532 |
+
INFO: 10.16.25.209:57254 - "GET /health HTTP/1.1" 200 OK
|
| 533 |
+
INFO: 10.16.13.79:48183 - "GET /health HTTP/1.1" 200 OK
|
| 534 |
+
INFO: 10.16.25.209:48521 - "GET /health HTTP/1.1" 200 OK
|
| 535 |
+
INFO: 2025-12-14T03:49:06 - app.core.supabase_auth: Session refreshed successfully
|
| 536 |
+
INFO: 2025-12-14T03:49:06 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 537 |
+
INFO: 10.16.13.79:58343 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 538 |
+
INFO: 2025-12-14T03:52:31 - app.core.supabase_auth: Session refreshed successfully
|
| 539 |
+
INFO: 2025-12-14T03:52:31 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 540 |
+
INFO: 10.16.13.79:60953 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 541 |
+
INFO: 10.16.25.209:51385 - "GET /health HTTP/1.1" 200 OK
|
| 542 |
+
INFO: 10.16.13.79:36634 - "GET /health HTTP/1.1" 200 OK
|
| 543 |
+
INFO: 10.16.25.209:6726 - "GET /health HTTP/1.1" 200 OK
|
| 544 |
+
INFO: 10.16.13.79:40220 - "GET /health HTTP/1.1" 200 OK
|
| 545 |
+
INFO: 10.16.13.79:10199 - "GET /health HTTP/1.1" 200 OK
|
| 546 |
+
INFO: 10.16.25.209:62842 - "GET /health HTTP/1.1" 200 OK
|
| 547 |
+
INFO: 10.16.13.79:57972 - "GET /health HTTP/1.1" 200 OK
|
| 548 |
+
INFO: 10.16.25.209:34450 - "GET /health HTTP/1.1" 200 OK
|
| 549 |
+
INFO: 10.16.25.209:17777 - "GET /health HTTP/1.1" 200 OK
|
| 550 |
+
INFO: 10.16.13.79:1689 - "GET /health HTTP/1.1" 200 OK
|
| 551 |
+
INFO: 10.16.13.79:1096 - "GET /health HTTP/1.1" 200 OK
|
| 552 |
+
INFO: 10.16.13.79:1096 - "GET /health HTTP/1.1" 200 OK
|
| 553 |
+
INFO: 10.16.25.209:5751 - "GET /health HTTP/1.1" 200 OK
|
| 554 |
+
INFO: 10.16.13.79:13561 - "GET /health HTTP/1.1" 200 OK
|
| 555 |
+
INFO: 10.16.13.79:52545 - "GET /health HTTP/1.1" 200 OK
|
| 556 |
+
INFO: 10.16.25.209:11426 - "GET /health HTTP/1.1" 200 OK
|
| 557 |
+
INFO: 10.16.25.209:21992 - "GET /health HTTP/1.1" 200 OK
|
| 558 |
+
INFO: 10.16.13.79:11839 - "GET /health HTTP/1.1" 200 OK
|
| 559 |
+
INFO: 10.16.25.209:60538 - "GET /health HTTP/1.1" 200 OK
|
| 560 |
+
INFO: 10.16.13.79:37431 - "GET /health HTTP/1.1" 200 OK
|
| 561 |
+
INFO: 10.16.13.79:50820 - "GET /health HTTP/1.1" 200 OK
|
| 562 |
+
INFO: 10.16.25.209:39354 - "GET /health HTTP/1.1" 200 OK
|
| 563 |
+
INFO: 2025-12-14T04:44:08 - app.core.supabase_auth: Session refreshed successfully
|
| 564 |
+
INFO: 2025-12-14T04:44:08 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 565 |
+
INFO: 10.16.25.209:31743 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 566 |
+
INFO: 2025-12-14T04:47:34 - app.core.supabase_auth: Session refreshed successfully
|
| 567 |
+
INFO: 2025-12-14T04:47:34 - app.api.v1.auth: ✅ Token refreshed successfully for: nadina73@nembors.com
|
| 568 |
+
INFO: 10.16.13.79:23694 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 569 |
+
INFO: 10.16.25.209:14187 - "GET /health HTTP/1.1" 200 OK
|
| 570 |
+
INFO: 10.16.25.209:43637 - "GET /health HTTP/1.1" 200 OK
|
| 571 |
+
INFO: 10.16.25.209:13006 - "GET /health HTTP/1.1" 200 OK
|
| 572 |
+
INFO: 10.16.13.79:24411 - "GET /health HTTP/1.1" 200 OK
|
| 573 |
+
INFO: 10.16.13.79:55507 - "GET /health HTTP/1.1" 200 OK
|
| 574 |
+
INFO: 10.16.13.79:59459 - "GET /health HTTP/1.1" 200 OK
|
| 575 |
+
INFO: 10.16.25.209:49103 - "GET /health HTTP/1.1" 200 OK
|
| 576 |
+
INFO: 10.16.25.209:46433 - "GET /health HTTP/1.1" 200 OK
|
| 577 |
+
INFO: 10.16.13.79:58613 - "GET /health HTTP/1.1" 200 OK
|
| 578 |
+
INFO: 10.16.13.79:33747 - "GET /health HTTP/1.1" 200 OK
|
| 579 |
+
INFO: 10.16.25.209:59431 - "GET /health HTTP/1.1" 200 OK
|
| 580 |
+
INFO: 10.16.25.209:30512 - "GET /health HTTP/1.1" 200 OK
|
| 581 |
+
INFO: 10.16.25.209:43199 - "GET /health HTTP/1.1" 200 OK
|
| 582 |
+
INFO: 10.16.25.209:39442 - "GET /health HTTP/1.1" 200 OK
|
| 583 |
+
INFO: 10.16.25.209:7992 - "GET /health HTTP/1.1" 200 OK
|
| 584 |
+
INFO: 2025-12-14T05:39:09 - app.core.supabase_auth: Session refreshed successfully
|
| 585 |
+
INFO: 2025-12-14T05:39:09 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 586 |
+
INFO: 10.16.13.79:36468 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 587 |
+
INFO: 10.16.25.209:48618 - "GET /health HTTP/1.1" 200 OK
|
| 588 |
+
INFO: 10.16.13.79:52348 - "GET /health HTTP/1.1" 200 OK
|
| 589 |
+
INFO: 10.16.25.209:19469 - "GET /health HTTP/1.1" 200 OK
|
| 590 |
+
INFO: 10.16.13.79:46433 - "GET /health HTTP/1.1" 200 OK
|
| 591 |
+
INFO: 10.16.13.79:45638 - "GET /health HTTP/1.1" 200 OK
|
| 592 |
+
INFO: 10.16.13.79:61124 - "GET /health HTTP/1.1" 200 OK
|
| 593 |
+
INFO: 10.16.13.79:37210 - "GET /health HTTP/1.1" 200 OK
|
| 594 |
+
INFO: 10.16.13.79:21567 - "GET /health HTTP/1.1" 200 OK
|
| 595 |
+
INFO: 10.16.13.79:14258 - "GET /health HTTP/1.1" 200 OK
|
| 596 |
+
INFO: 10.16.25.209:55106 - "GET /health HTTP/1.1" 200 OK
|
| 597 |
+
INFO: 10.16.13.79:56904 - "GET /health HTTP/1.1" 200 OK
|
| 598 |
+
INFO: 2025-12-14T06:34:11 - app.core.supabase_auth: Session refreshed successfully
|
| 599 |
+
INFO: 2025-12-14T06:34:11 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 600 |
+
INFO: 10.16.25.209:8442 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 601 |
+
INFO: 10.16.13.79:32775 - "GET /health HTTP/1.1" 200 OK
|
| 602 |
+
INFO: 10.16.25.209:58889 - "GET /health HTTP/1.1" 200 OK
|
| 603 |
+
INFO: 10.16.13.79:25588 - "GET /health HTTP/1.1" 200 OK
|
| 604 |
+
INFO: 10.16.25.209:44353 - "GET /health HTTP/1.1" 200 OK
|
| 605 |
+
INFO: 10.16.25.209:64164 - "GET /health HTTP/1.1" 200 OK
|
| 606 |
+
INFO: 10.16.25.209:49184 - "GET /health HTTP/1.1" 200 OK
|
| 607 |
+
INFO: 10.16.13.79:13720 - "GET /health HTTP/1.1" 200 OK
|
| 608 |
+
INFO: 10.16.13.79:20885 - "GET /health HTTP/1.1" 200 OK
|
| 609 |
+
INFO: 10.16.13.79:57477 - "GET /health HTTP/1.1" 200 OK
|
| 610 |
+
INFO: 10.16.25.209:48914 - "GET /health HTTP/1.1" 200 OK
|
| 611 |
+
INFO: 10.16.25.209:19223 - "GET /health HTTP/1.1" 200 OK
|
| 612 |
+
INFO: 2025-12-14T07:29:14 - app.core.supabase_auth: Session refreshed successfully
|
| 613 |
+
INFO: 2025-12-14T07:29:14 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 614 |
+
INFO: 10.16.25.209:27197 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 615 |
+
INFO: 10.16.25.209:41414 - "GET /health HTTP/1.1" 200 OK
|
| 616 |
+
INFO: 10.16.13.79:33238 - "GET /health HTTP/1.1" 200 OK
|
| 617 |
+
INFO: 10.16.25.209:54570 - "GET /health HTTP/1.1" 200 OK
|
| 618 |
+
INFO: 10.16.25.209:50097 - "GET /health HTTP/1.1" 200 OK
|
| 619 |
+
INFO: 10.16.13.79:44557 - "GET /health HTTP/1.1" 200 OK
|
| 620 |
+
INFO: 10.16.25.209:4844 - "GET /health HTTP/1.1" 200 OK
|
| 621 |
+
INFO: 10.16.13.79:34912 - "GET /health HTTP/1.1" 200 OK
|
| 622 |
+
INFO: 10.16.13.79:13121 - "GET /health HTTP/1.1" 200 OK
|
| 623 |
+
INFO: 10.16.13.79:33709 - "GET /health HTTP/1.1" 200 OK
|
| 624 |
+
INFO: 10.16.13.79:48200 - "GET /health HTTP/1.1" 200 OK
|
| 625 |
+
INFO: 10.16.25.209:58998 - "GET /health HTTP/1.1" 200 OK
|
| 626 |
+
INFO: 2025-12-14T08:24:16 - app.core.supabase_auth: Session refreshed successfully
|
| 627 |
+
INFO: 2025-12-14T08:24:16 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 628 |
+
INFO: 10.16.13.79:23608 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 629 |
+
INFO: 10.16.25.209:25466 - "GET /health HTTP/1.1" 200 OK
|
| 630 |
+
INFO: 10.16.25.209:9588 - "GET /health HTTP/1.1" 200 OK
|
| 631 |
+
INFO: 10.16.13.79:52108 - "GET /health HTTP/1.1" 200 OK
|
| 632 |
+
INFO: 10.16.25.209:42493 - "GET /health HTTP/1.1" 200 OK
|
| 633 |
+
INFO: 10.16.25.209:7849 - "GET /health HTTP/1.1" 200 OK
|
| 634 |
+
INFO: 10.16.25.209:55139 - "GET /health HTTP/1.1" 200 OK
|
| 635 |
+
INFO: 10.16.13.79:37045 - "GET /health HTTP/1.1" 200 OK
|
| 636 |
+
INFO: 10.16.13.79:14773 - "GET /health HTTP/1.1" 200 OK
|
| 637 |
+
INFO: 10.16.13.79:11918 - "GET /health HTTP/1.1" 200 OK
|
| 638 |
+
INFO: 10.16.13.79:62109 - "GET /health HTTP/1.1" 200 OK
|
| 639 |
+
INFO: 10.16.13.79:31254 - "GET /health HTTP/1.1" 200 OK
|
| 640 |
+
INFO: 2025-12-14T09:19:23 - app.core.supabase_auth: Session refreshed successfully
|
| 641 |
+
INFO: 2025-12-14T09:19:23 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 642 |
+
INFO: 10.16.13.79:39774 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 643 |
+
INFO: 10.16.25.209:49277 - "GET /health HTTP/1.1" 200 OK
|
| 644 |
+
INFO: 10.16.25.209:26932 - "GET /health HTTP/1.1" 200 OK
|
| 645 |
+
INFO: 10.16.25.209:48333 - "GET /health HTTP/1.1" 200 OK
|
| 646 |
+
INFO: 10.16.13.79:25237 - "GET /health HTTP/1.1" 200 OK
|
| 647 |
+
INFO: 10.16.25.209:12273 - "GET /health HTTP/1.1" 200 OK
|
| 648 |
+
INFO: 10.16.25.209:52512 - "GET /health HTTP/1.1" 200 OK
|
| 649 |
+
INFO: 10.16.25.209:44701 - "GET /health HTTP/1.1" 200 OK
|
| 650 |
+
INFO: 10.16.25.209:7068 - "GET /health HTTP/1.1" 200 OK
|
| 651 |
+
INFO: 10.16.13.79:61259 - "GET /health HTTP/1.1" 200 OK
|
| 652 |
+
INFO: 10.16.13.79:32735 - "GET /health HTTP/1.1" 200 OK
|
| 653 |
+
INFO: 10.16.13.79:24391 - "GET /health HTTP/1.1" 200 OK
|
| 654 |
+
INFO: 2025-12-14T10:14:28 - app.core.supabase_auth: Session refreshed successfully
|
| 655 |
+
INFO: 2025-12-14T10:14:28 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 656 |
+
INFO: 10.16.13.79:64086 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 657 |
+
INFO: 10.16.25.209:4472 - "GET /health HTTP/1.1" 200 OK
|
| 658 |
+
INFO: 10.16.25.209:62331 - "GET /health HTTP/1.1" 200 OK
|
| 659 |
+
INFO: 10.16.13.79:1695 - "GET /health HTTP/1.1" 200 OK
|
| 660 |
+
INFO: 10.16.13.79:8995 - "GET /health HTTP/1.1" 200 OK
|
| 661 |
+
INFO: 10.16.25.209:1628 - "GET /health HTTP/1.1" 200 OK
|
| 662 |
+
INFO: 10.16.25.209:23967 - "GET /health HTTP/1.1" 200 OK
|
| 663 |
+
INFO: 10.16.25.209:20012 - "GET /health HTTP/1.1" 200 OK
|
| 664 |
+
INFO: 10.16.25.209:9016 - "GET /health HTTP/1.1" 200 OK
|
| 665 |
+
INFO: 10.16.13.79:21646 - "GET /health HTTP/1.1" 200 OK
|
| 666 |
+
INFO: 10.16.25.209:36774 - "GET /health HTTP/1.1" 200 OK
|
| 667 |
+
INFO: 10.16.25.209:34805 - "GET /health HTTP/1.1" 200 OK
|
| 668 |
+
INFO: 2025-12-14T11:09:29 - app.core.supabase_auth: Session refreshed successfully
|
| 669 |
+
INFO: 2025-12-14T11:09:29 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 670 |
+
INFO: 10.16.13.79:9187 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 671 |
+
INFO: 10.16.25.209:18265 - "GET /health HTTP/1.1" 200 OK
|
| 672 |
+
INFO: 10.16.25.209:13268 - "GET /health HTTP/1.1" 200 OK
|
| 673 |
+
INFO: 10.16.25.209:58752 - "GET /health HTTP/1.1" 200 OK
|
| 674 |
+
INFO: 10.16.25.209:5179 - "GET /health HTTP/1.1" 200 OK
|
| 675 |
+
INFO: 10.16.13.79:48336 - "GET /health HTTP/1.1" 200 OK
|
| 676 |
+
INFO: 10.16.13.79:2149 - "GET /health HTTP/1.1" 200 OK
|
| 677 |
+
INFO: 10.16.25.209:45472 - "GET /health HTTP/1.1" 200 OK
|
| 678 |
+
INFO: 10.16.13.79:41902 - "GET /health HTTP/1.1" 200 OK
|
| 679 |
+
INFO: 10.16.13.79:17298 - "GET /health HTTP/1.1" 200 OK
|
| 680 |
+
INFO: 10.16.13.79:7536 - "GET /health HTTP/1.1" 200 OK
|
| 681 |
+
INFO: 10.16.13.79:56522 - "GET /health HTTP/1.1" 200 OK
|
| 682 |
+
INFO: 2025-12-14T12:04:31 - app.core.supabase_auth: Session refreshed successfully
|
| 683 |
+
INFO: 2025-12-14T12:04:31 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 684 |
+
INFO: 10.16.13.79:58610 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 685 |
+
INFO: 10.16.25.209:12066 - "GET /health HTTP/1.1" 200 OK
|
| 686 |
+
INFO: 10.16.25.209:5352 - "GET /health HTTP/1.1" 200 OK
|
| 687 |
+
INFO: 10.16.13.79:45545 - "GET /health HTTP/1.1" 200 OK
|
| 688 |
+
INFO: 10.16.13.79:58212 - "GET /health HTTP/1.1" 200 OK
|
| 689 |
+
INFO: 10.16.13.79:46681 - "GET /health HTTP/1.1" 200 OK
|
| 690 |
+
INFO: 10.16.25.209:39315 - "GET /health HTTP/1.1" 200 OK
|
| 691 |
+
INFO: 10.16.13.79:28418 - "GET /health HTTP/1.1" 200 OK
|
| 692 |
+
INFO: 10.16.13.79:32613 - "GET /robots.txt HTTP/1.1" 404 Not Found
|
| 693 |
+
INFO: 10.16.25.209:54198 - "GET /?logs=container HTTP/1.1" 200 OK
|
| 694 |
+
INFO: 10.16.13.79:64121 - "GET /?logs=container HTTP/1.1" 200 OK
|
| 695 |
+
INFO: 10.16.13.79:60665 - "GET /health HTTP/1.1" 200 OK
|
| 696 |
+
ERROR: 2025-12-14T14:26:00 - app.core.supabase_auth: Session refresh error: Invalid Refresh Token: Already Used
|
| 697 |
+
ERROR: 2025-12-14T14:26:00 - app.api.v1.auth: ❌ Token refresh error: Invalid Refresh Token: Already Used
|
| 698 |
+
INFO: 10.16.13.79:60665 - "POST /api/v1/auth/refresh-token HTTP/1.1" 401 Unauthorized
|
| 699 |
+
INFO: 10.16.25.209:60584 - "GET /health HTTP/1.1" 200 OK
|
| 700 |
+
INFO: 2025-12-14T14:26:06 - app.core.supabase_auth: User signed in successfully: viyisa8151@feralrex.com
|
| 701 |
+
INFO: 2025-12-14T14:26:07 - app.services.audit_service: Audit log created: login on auth by viyisa8151@feralrex.com
|
| 702 |
+
INFO: 2025-12-14T14:26:07 - app.api.v1.auth: User logged in successfully: viyisa8151@feralrex.com
|
| 703 |
+
INFO: 10.16.13.79:46983 - "POST /api/v1/auth/login HTTP/1.1" 200 OK
|
| 704 |
+
INFO: 2025-12-14T14:26:08 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 705 |
+
INFO: 2025-12-14T14:26:08 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 706 |
+
INFO: 10.16.13.79:46983 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 707 |
+
INFO: 2025-12-14T14:26:08 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 708 |
+
INFO: 2025-12-14T14:26:08 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 709 |
+
INFO: 10.16.25.209:49638 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 710 |
+
INFO: 2025-12-14T14:26:08 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 711 |
+
INFO: 2025-12-14T14:26:08 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 712 |
+
INFO: 10.16.13.79:46983 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 713 |
+
INFO: 2025-12-14T14:26:09 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 714 |
+
INFO: 2025-12-14T14:26:09 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 715 |
+
INFO: 10.16.25.209:49638 - "GET /api/v1/analytics/user/overview?limit=50 HTTP/1.1" 200 OK
|
| 716 |
+
INFO: 2025-12-14T14:26:11 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 717 |
+
INFO: 2025-12-14T14:26:11 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 718 |
+
INFO: 10.16.13.79:46983 - "GET /api/v1/profile/me/validation HTTP/1.1" 200 OK
|
| 719 |
+
INFO: 2025-12-14T14:26:11 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 720 |
+
INFO: 2025-12-14T14:26:11 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 721 |
+
INFO: 2025-12-14T14:26:11 - app.services.project_service: Listed 1 projects (total: 1) for user 43b778b0-2062-4724-abbb-916a4835a9b0
|
| 722 |
+
INFO: 10.16.25.209:49638 - "GET /api/v1/projects?page=1&per_page=100&status=active HTTP/1.1" 200 OK
|
| 723 |
+
INFO: 2025-12-14T14:26:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 724 |
+
INFO: 2025-12-14T14:26:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 725 |
+
INFO: 2025-12-14T14:26:14 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user 43b778b0-2062-4724-abbb-916a4835a9b0 - building fresh data
|
| 726 |
+
INFO: 2025-12-14T14:26:14 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 727 |
+
INFO: 10.16.25.209:32334 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
|
| 728 |
+
INFO: 10.16.13.79:4014 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
|
| 729 |
+
INFO: 10.16.13.79:4014 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 730 |
+
INFO: 10.16.25.209:53765 - "GET /health HTTP/1.1" 200 OK
|
| 731 |
+
INFO: 10.16.13.79:47714 - "GET /health HTTP/1.1" 200 OK
|
| 732 |
+
INFO: 10.16.25.209:21539 - "GET /health HTTP/1.1" 200 OK
|
| 733 |
+
INFO: 10.16.25.209:65140 - "GET /health HTTP/1.1" 200 OK
|
| 734 |
+
INFO: 10.16.25.209:62036 - "GET /health HTTP/1.1" 200 OK
|
| 735 |
+
INFO: 10.16.25.209:11372 - "GET /health HTTP/1.1" 200 OK
|
| 736 |
+
INFO: 10.16.13.79:49750 - "GET /health HTTP/1.1" 200 OK
|
| 737 |
+
INFO: 10.16.13.79:3826 - "GET /health HTTP/1.1" 200 OK
|
| 738 |
+
INFO: 10.16.13.79:41241 - "GET /health HTTP/1.1" 200 OK
|
| 739 |
+
INFO: 10.16.25.209:1877 - "GET /health HTTP/1.1" 200 OK
|
| 740 |
+
INFO: 10.16.13.79:40747 - "GET /health HTTP/1.1" 200 OK
|
| 741 |
+
INFO: 10.16.13.79:2628 - "GET /health HTTP/1.1" 200 OK
|
| 742 |
+
INFO: 10.16.13.79:42775 - "GET /health HTTP/1.1" 200 OK
|
| 743 |
+
INFO: 10.16.25.209:5802 - "GET /health HTTP/1.1" 200 OK
|
| 744 |
+
INFO: 10.16.25.209:40925 - "GET /health HTTP/1.1" 200 OK
|
| 745 |
+
INFO: 10.16.13.79:58161 - "GET /health HTTP/1.1" 200 OK
|
| 746 |
+
INFO: 10.16.13.79:44864 - "GET /health HTTP/1.1" 200 OK
|
| 747 |
+
INFO: 2025-12-14T15:04:12 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 748 |
+
INFO: 2025-12-14T15:04:12 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 749 |
+
INFO: 10.16.25.209:14927 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 750 |
+
INFO: 2025-12-14T15:04:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 751 |
+
INFO: 2025-12-14T15:04:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 752 |
+
INFO: 10.16.25.209:14927 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 753 |
+
INFO: 2025-12-14T15:04:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 754 |
+
INFO: 2025-12-14T15:04:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 755 |
+
INFO: 10.16.13.79:44864 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 756 |
+
INFO: 10.16.25.209:14927 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
|
| 757 |
+
INFO: 10.16.25.209:14927 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 758 |
+
INFO: 10.16.13.79:63796 - "GET /health HTTP/1.1" 200 OK
|
| 759 |
+
INFO: 2025-12-14T15:04:40 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 760 |
+
INFO: 2025-12-14T15:04:40 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 761 |
+
INFO: 10.16.25.209:27012 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 762 |
+
INFO: 2025-12-14T15:04:41 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 763 |
+
INFO: 2025-12-14T15:04:41 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 764 |
+
INFO: 10.16.25.209:27012 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 765 |
+
INFO: 2025-12-14T15:04:41 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 766 |
+
INFO: 2025-12-14T15:04:41 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 767 |
+
INFO: 10.16.13.79:63796 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 768 |
+
INFO: 10.16.25.209:27012 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
|
| 769 |
+
INFO: 10.16.13.79:63796 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 770 |
+
INFO: 10.16.13.79:53891 - "GET /health HTTP/1.1" 200 OK
|
| 771 |
+
INFO: 2025-12-14T15:05:13 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 772 |
+
INFO: 2025-12-14T15:05:13 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 773 |
+
INFO: 10.16.13.79:53891 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 774 |
+
INFO: 2025-12-14T15:05:13 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 775 |
+
INFO: 2025-12-14T15:05:13 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 776 |
+
INFO: 10.16.13.79:53891 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 777 |
+
INFO: 2025-12-14T15:05:13 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 778 |
+
INFO: 2025-12-14T15:05:13 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 779 |
+
INFO: 10.16.25.209:8747 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 780 |
+
INFO: 10.16.13.79:53891 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
|
| 781 |
+
INFO: 10.16.13.79:53891 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 782 |
+
INFO: 10.16.25.209:19083 - "GET / HTTP/1.1" 200 OK
|
| 783 |
+
INFO: 10.16.25.209:34398 - "GET /health HTTP/1.1" 200 OK
|
| 784 |
+
INFO: 10.16.25.209:25827 - "GET /health HTTP/1.1" 200 OK
|
| 785 |
+
INFO: 2025-12-14T15:10:33 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 786 |
+
INFO: 2025-12-14T15:10:33 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 787 |
+
INFO: 10.16.13.79:24132 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 788 |
+
INFO: 2025-12-14T15:10:33 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 789 |
+
INFO: 2025-12-14T15:10:33 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 790 |
+
INFO: 10.16.13.79:24132 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 791 |
+
INFO: 2025-12-14T15:10:33 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 792 |
+
INFO: 2025-12-14T15:10:33 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 793 |
+
INFO: 10.16.25.209:25827 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 794 |
+
INFO: 10.16.25.209:25827 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
|
| 795 |
+
INFO: 10.16.25.209:25827 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 796 |
+
INFO: 10.16.25.209:23533 - "GET /health HTTP/1.1" 200 OK
|
| 797 |
+
INFO: 2025-12-14T15:12:05 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 798 |
+
INFO: 2025-12-14T15:12:05 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 799 |
+
INFO: 10.16.13.79:17570 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 800 |
+
INFO: 2025-12-14T15:12:07 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 801 |
+
INFO: 2025-12-14T15:12:07 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 802 |
+
INFO: 10.16.13.79:17570 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 803 |
+
INFO: 2025-12-14T15:12:07 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 804 |
+
INFO: 2025-12-14T15:12:07 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 805 |
+
INFO: 10.16.25.209:23533 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 806 |
+
INFO: 10.16.25.209:23533 - "GET /api/v1/tickets/1e622599-1909-49b9-9d8b-4c5cb483b29e/detail HTTP/1.1" 200 OK
|
| 807 |
+
INFO: 10.16.13.79:17570 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/regions/24510a5a-13a6-4334-9055-b4d476aa9e0a HTTP/1.1" 200 OK
|
| 808 |
+
INFO: 10.16.25.209:22959 - "GET /health HTTP/1.1" 200 OK
|
| 809 |
+
INFO: 10.16.25.209:11555 - "GET /health HTTP/1.1" 200 OK
|
| 810 |
+
INFO: 2025-12-14T15:13:40 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 811 |
+
INFO: 2025-12-14T15:13:40 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 812 |
+
INFO: 10.16.13.79:49397 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 813 |
+
INFO: 2025-12-14T15:13:41 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 814 |
+
INFO: 2025-12-14T15:13:41 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 815 |
+
INFO: 10.16.13.79:49397 - "GET /api/v1/timesheets/me/timesheets?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page=1&page_size=20 HTTP/1.1" 200 OK
|
| 816 |
+
INFO: 2025-12-14T15:13:41 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 817 |
+
INFO: 2025-12-14T15:13:41 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 818 |
+
INFO: 10.16.25.209:50949 - "GET /api/v1/timesheets/stats?start_date=2025-12-01&end_date=2025-12-31&user_id=43b778b0-2062-4724-abbb-916a4835a9b0&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
|
| 819 |
+
INFO: 10.16.25.209:22786 - "GET /health HTTP/1.1" 200 OK
|
| 820 |
+
INFO: 10.16.13.79:20689 - "GET /health HTTP/1.1" 200 OK
|
| 821 |
+
INFO: 10.16.25.209:40673 - "GET /health HTTP/1.1" 200 OK
|
| 822 |
+
INFO: 2025-12-14T15:20:13 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 823 |
+
INFO: 2025-12-14T15:20:13 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 824 |
+
INFO: 10.16.25.209:40673 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 825 |
+
INFO: 2025-12-14T15:20:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 826 |
+
INFO: 2025-12-14T15:20:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 827 |
+
INFO: 10.16.25.209:40673 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 828 |
+
INFO: 2025-12-14T15:20:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 829 |
+
INFO: 2025-12-14T15:20:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 830 |
+
INFO: 10.16.13.79:31572 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 831 |
+
INFO: 2025-12-14T15:20:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 832 |
+
INFO: 2025-12-14T15:20:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 833 |
+
INFO: 10.16.13.79:48324 - "GET /api/v1/timesheets/stats?start_date=2025-12-01&end_date=2025-12-31&user_id=43b778b0-2062-4724-abbb-916a4835a9b0&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
|
| 834 |
+
INFO: 2025-12-14T15:20:14 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 835 |
+
INFO: 2025-12-14T15:20:14 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 836 |
+
INFO: 10.16.25.209:30191 - "GET /api/v1/timesheets/me/timesheets?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page=1&page_size=20 HTTP/1.1" 200 OK
|
| 837 |
+
INFO: 10.16.25.209:48853 - "GET /health HTTP/1.1" 200 OK
|
| 838 |
+
INFO: 2025-12-14T15:21:09 - app.core.supabase_auth: Session refreshed successfully
|
| 839 |
+
INFO: 2025-12-14T15:21:09 - app.api.v1.auth: ✅ Token refreshed successfully for: viyisa8151@feralrex.com
|
| 840 |
+
INFO: 10.16.25.209:61578 - "POST /api/v1/auth/refresh-token HTTP/1.1" 200 OK
|
| 841 |
+
INFO: 10.16.13.79:32888 - "GET /health HTTP/1.1" 200 OK
|
| 842 |
+
INFO: 2025-12-14T15:22:05 - app.core.supabase_auth: User signed in successfully: nadina73@nembors.com
|
| 843 |
+
INFO: 2025-12-14T15:22:06 - app.services.audit_service: Audit log created: login on auth by nadina73@nembors.com
|
| 844 |
+
INFO: 2025-12-14T15:22:06 - app.api.v1.auth: User logged in successfully: nadina73@nembors.com
|
| 845 |
+
INFO: 10.16.25.209:62158 - "POST /api/v1/auth/login HTTP/1.1" 200 OK
|
| 846 |
+
INFO: 2025-12-14T15:22:07 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 847 |
+
INFO: 2025-12-14T15:22:07 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 848 |
+
INFO: 10.16.13.79:43055 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 849 |
+
INFO: 2025-12-14T15:22:08 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 850 |
+
INFO: 2025-12-14T15:22:08 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 851 |
+
INFO: 10.16.25.209:62158 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 852 |
+
INFO: 2025-12-14T15:22:08 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 853 |
+
INFO: 2025-12-14T15:22:08 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 854 |
+
INFO: 10.16.13.79:43055 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 855 |
+
INFO: 2025-12-14T15:22:09 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 856 |
+
INFO: 2025-12-14T15:22:09 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 857 |
+
INFO: 10.16.13.79:43055 - "GET /api/v1/analytics/user/overview HTTP/1.1" 200 OK
|
| 858 |
+
INFO: 2025-12-14T15:22:12 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 859 |
+
INFO: 2025-12-14T15:22:12 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 860 |
+
INFO: 2025-12-14T15:22:12 - app.services.project_service: Listed 1 projects (total: 1) for user c5cf92be-4172-4fe2-af5c-f05d83b3a938
|
| 861 |
+
INFO: 10.16.25.209:30374 - "GET /api/v1/projects?page=1&per_page=100 HTTP/1.1" 200 OK
|
| 862 |
+
INFO: 2025-12-14T15:22:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 863 |
+
INFO: 2025-12-14T15:22:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 864 |
+
INFO: 2025-12-14T15:22:16 - app.services.audit_service: Audit log created: update on user_preferences by nadina73@nembors.com
|
| 865 |
+
INFO: 2025-12-14T15:22:16 - app.api.v1.auth: Preferences updated for user: nadina73@nembors.com
|
| 866 |
+
INFO: 10.16.13.79:15595 - "PUT /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 867 |
+
INFO: 2025-12-14T15:22:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 868 |
+
INFO: 2025-12-14T15:22:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 869 |
+
INFO: 2025-12-14T15:22:16 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user c5cf92be-4172-4fe2-af5c-f05d83b3a938 - building fresh data
|
| 870 |
+
INFO: 2025-12-14T15:22:16 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 871 |
+
INFO: 10.16.25.209:6202 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
|
| 872 |
+
INFO: 2025-12-14T15:22:17 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 873 |
+
INFO: 2025-12-14T15:22:17 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 874 |
+
INFO: 10.16.25.209:6202 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 875 |
+
INFO: 10.16.25.209:6202 - "GET /api/v1/notifications?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page_size=50&is_read=false HTTP/1.1" 200 OK
|
| 876 |
+
INFO: 10.16.13.79:15595 - "GET /api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
|
| 877 |
+
INFO: 10.16.25.209:1728 - "GET /health HTTP/1.1" 200 OK
|
| 878 |
+
INFO: 10.16.13.79:53036 - "GET /health HTTP/1.1" 200 OK
|
| 879 |
+
INFO: 10.16.13.79:59924 - "GET /health HTTP/1.1" 200 OK
|
| 880 |
+
INFO: 2025-12-14T15:26:14 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 881 |
+
INFO: 2025-12-14T15:26:14 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 882 |
+
INFO: 10.16.13.79:35945 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 883 |
+
INFO: 10.16.25.209:40557 - "GET /health HTTP/1.1" 200 OK
|
| 884 |
+
INFO: 2025-12-14T15:26:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 885 |
+
INFO: 2025-12-14T15:26:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 886 |
+
INFO: 10.16.25.209:40557 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 887 |
+
INFO: 2025-12-14T15:26:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 888 |
+
INFO: 2025-12-14T15:26:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 889 |
+
INFO: 10.16.13.79:35945 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 890 |
+
INFO: 2025-12-14T15:26:15 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 891 |
+
INFO: 2025-12-14T15:26:15 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 892 |
+
INFO: 10.16.13.79:35945 - "GET /api/v1/analytics/user/overview HTTP/1.1" 200 OK
|
| 893 |
+
INFO: 2025-12-14T15:26:16 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 894 |
+
INFO: 2025-12-14T15:26:16 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 895 |
+
INFO: 2025-12-14T15:26:16 - app.services.project_service: Listed 1 projects (total: 1) for user c5cf92be-4172-4fe2-af5c-f05d83b3a938
|
| 896 |
+
INFO: 10.16.25.209:40557 - "GET /api/v1/projects?page=1&per_page=100 HTTP/1.1" 200 OK
|
| 897 |
+
INFO: 10.16.13.79:30398 - "GET /health HTTP/1.1" 200 OK
|
| 898 |
+
INFO: 10.16.13.79:36119 - "GET /health HTTP/1.1" 200 OK
|
| 899 |
+
INFO: 2025-12-14T15:27:49 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 900 |
+
INFO: 2025-12-14T15:27:49 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 901 |
+
INFO: 2025-12-14T15:27:49 - app.services.audit_service: Audit log created: update on user_preferences by nadina73@nembors.com
|
| 902 |
+
INFO: 2025-12-14T15:27:49 - app.api.v1.auth: Preferences updated for user: nadina73@nembors.com
|
| 903 |
+
INFO: 10.16.25.209:51672 - "PUT /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 904 |
+
INFO: 2025-12-14T15:27:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 905 |
+
INFO: 2025-12-14T15:27:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 906 |
+
INFO: 10.16.25.209:51672 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 907 |
+
INFO: 2025-12-14T15:27:50 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 908 |
+
INFO: 2025-12-14T15:27:50 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 909 |
+
INFO: 2025-12-14T15:27:50 - app.services.dashboard_service: Dashboard cache MISS for project 0ade6bd1-e492-4e25-b681-59f42058d29a, user c5cf92be-4172-4fe2-af5c-f05d83b3a938 - building fresh data
|
| 910 |
+
INFO: 2025-12-14T15:27:50 - app.services.dashboard_service: Built and cached dashboard for project 0ade6bd1-e492-4e25-b681-59f42058d29a
|
| 911 |
+
INFO: 10.16.13.79:36119 - "GET /api/v1/projects/0ade6bd1-e492-4e25-b681-59f42058d29a/dashboard HTTP/1.1" 200 OK
|
| 912 |
+
INFO: 10.16.13.79:36119 - "GET /api/v1/notifications?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page_size=50&is_read=false HTTP/1.1" 200 OK
|
| 913 |
+
INFO: 10.16.25.209:51672 - "GET /api/v1/tickets/stats?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
|
| 914 |
+
INFO: 10.16.25.209:51672 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
|
| 915 |
+
INFO: 2025-12-14T15:27:53 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 916 |
+
INFO: 2025-12-14T15:27:53 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 917 |
+
WARNING: 2025-12-14T15:27:53 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
|
| 918 |
+
INFO: 10.16.13.79:36119 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
|
| 919 |
+
INFO: 10.16.13.79:36119 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-07&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
|
| 920 |
+
INFO: 2025-12-14T15:27:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 921 |
+
INFO: 2025-12-14T15:27:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 922 |
+
WARNING: 2025-12-14T15:27:54 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
|
| 923 |
+
INFO: 10.16.25.209:51672 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-07&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
|
| 924 |
+
INFO: 10.16.25.209:56295 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
|
| 925 |
+
INFO: 2025-12-14T15:28:20 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 926 |
+
INFO: 2025-12-14T15:28:20 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 927 |
+
WARNING: 2025-12-14T15:28:20 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
|
| 928 |
+
INFO: 10.16.13.79:6554 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
|
| 929 |
+
INFO: 10.16.25.209:56295 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
|
| 930 |
+
INFO: 2025-12-14T15:28:22 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 931 |
+
INFO: 2025-12-14T15:28:22 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 932 |
+
WARNING: 2025-12-14T15:28:22 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
|
| 933 |
+
INFO: 10.16.13.79:6554 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
|
| 934 |
+
INFO: 10.16.13.79:36247 - "GET /health HTTP/1.1" 200 OK
|
| 935 |
+
INFO: 2025-12-14T15:29:34 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 936 |
+
INFO: 2025-12-14T15:29:34 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 937 |
+
INFO: 10.16.25.209:59932 - "GET /api/v1/auth/me HTTP/1.1" 200 OK
|
| 938 |
+
INFO: 10.16.13.79:29739 - "GET /health HTTP/1.1" 200 OK
|
| 939 |
+
INFO: 2025-12-14T15:29:35 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 940 |
+
INFO: 2025-12-14T15:29:35 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 941 |
+
INFO: 10.16.13.79:29739 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 942 |
+
INFO: 2025-12-14T15:29:35 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 943 |
+
INFO: 2025-12-14T15:29:35 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 944 |
+
INFO: 10.16.25.209:59932 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 945 |
+
INFO: 2025-12-14T15:29:36 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 946 |
+
INFO: 2025-12-14T15:29:36 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 947 |
+
INFO: 10.16.25.209:59932 - "GET /api/v1/timesheets/stats?start_date=2025-12-01&end_date=2025-12-31&user_id=43b778b0-2062-4724-abbb-916a4835a9b0&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 200 OK
|
| 948 |
+
INFO: 2025-12-14T15:29:36 - app.api.deps: Checking active user: 43b778b0-2062-4724-abbb-916a4835a9b0, is_active: True, type: <class 'bool'>
|
| 949 |
+
INFO: 2025-12-14T15:29:36 - app.api.deps: User 43b778b0-2062-4724-abbb-916a4835a9b0 is active - proceeding
|
| 950 |
+
INFO: 10.16.13.79:29739 - "GET /api/v1/timesheets/me/timesheets?project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&page=1&page_size=20 HTTP/1.1" 200 OK
|
| 951 |
+
INFO: 10.16.25.209:25142 - "GET /api/v1/timesheets/team/stats?start_date=2025-12-08&end_date=2025-12-14&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a HTTP/1.1" 404 Not Found
|
| 952 |
+
INFO: 10.16.25.209:33363 - "GET /health HTTP/1.1" 200 OK
|
| 953 |
+
INFO: 2025-12-14T15:29:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 954 |
+
INFO: 2025-12-14T15:29:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 955 |
+
WARNING: 2025-12-14T15:29:54 - app.core.permissions: Permission denied: User nadina73@nembors.com (role=project_manager) attempted list_timesheets requiring 'view_timesheets'
|
| 956 |
+
INFO: 2025-12-14T15:29:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 957 |
+
INFO: 2025-12-14T15:29:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 958 |
+
INFO: 10.16.25.209:52449 - "GET /api/v1/auth/me/preferences HTTP/1.1" 200 OK
|
| 959 |
+
INFO: 2025-12-14T15:29:54 - app.api.deps: Checking active user: c5cf92be-4172-4fe2-af5c-f05d83b3a938, is_active: True, type: <class 'bool'>
|
| 960 |
+
INFO: 2025-12-14T15:29:54 - app.api.deps: User c5cf92be-4172-4fe2-af5c-f05d83b3a938 is active - proceeding
|
| 961 |
+
INFO: 10.16.13.79:14062 - "GET /api/v1/auth/me/preferences/available-apps HTTP/1.1" 200 OK
|
| 962 |
+
INFO: 10.16.13.79:21400 - "GET /api/v1/timesheets?page=1&page_size=50&project_id=0ade6bd1-e492-4e25-b681-59f42058d29a&date_from=2025-12-08&date_to=2025-12-14 HTTP/1.1" 403 Forbidden
|
| 963 |
+
|
src/app/api/v1/timesheets.py
CHANGED
|
@@ -679,6 +679,153 @@ async def get_timesheet_stats(
|
|
| 679 |
)
|
| 680 |
|
| 681 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 682 |
@router.get("/{timesheet_id}", response_model=TimesheetResponse)
|
| 683 |
@require_permission("view_timesheets")
|
| 684 |
async def get_timesheet(
|
|
@@ -1021,154 +1168,6 @@ async def generate_timesheets(
|
|
| 1021 |
)
|
| 1022 |
|
| 1023 |
|
| 1024 |
-
|
| 1025 |
-
# ============================================
|
| 1026 |
-
# TEAM STATS (AGGREGATED)
|
| 1027 |
-
# ============================================
|
| 1028 |
-
|
| 1029 |
-
@router.get("/team/stats")
|
| 1030 |
-
@require_permission("view_timesheets")
|
| 1031 |
-
async def get_team_stats(
|
| 1032 |
-
start_date: date = Query(..., description="Start date for statistics"),
|
| 1033 |
-
end_date: date = Query(..., description="End date for statistics"),
|
| 1034 |
-
project_id: Optional[UUID] = Query(None, description="Filter by specific project"),
|
| 1035 |
-
current_user: User = Depends(get_current_active_user),
|
| 1036 |
-
db: Session = Depends(get_db)
|
| 1037 |
-
):
|
| 1038 |
-
"""
|
| 1039 |
-
Get aggregated team statistics (all team members' stats in one call).
|
| 1040 |
-
|
| 1041 |
-
**Authorization:**
|
| 1042 |
-
- Managers can view their team stats
|
| 1043 |
-
- Admins can view all team stats
|
| 1044 |
-
|
| 1045 |
-
**Query Parameters:**
|
| 1046 |
-
- start_date: Start of date range (required)
|
| 1047 |
-
- end_date: End of date range (required)
|
| 1048 |
-
- project_id: Filter by specific project (optional)
|
| 1049 |
-
|
| 1050 |
-
**Returns:**
|
| 1051 |
-
Array of user stats with:
|
| 1052 |
-
- user_id, user_name, user_email, role
|
| 1053 |
-
- Day counts (present, absent, leave)
|
| 1054 |
-
- Attendance/absence rates
|
| 1055 |
-
- Hours worked
|
| 1056 |
-
- Ticket metrics (assigned, completed, completion rate)
|
| 1057 |
-
|
| 1058 |
-
**Use Cases:**
|
| 1059 |
-
- Team performance dashboard
|
| 1060 |
-
- Manager overview of all team members
|
| 1061 |
-
- Comparative performance analysis
|
| 1062 |
-
- Payroll preparation
|
| 1063 |
-
"""
|
| 1064 |
-
try:
|
| 1065 |
-
# Authorization check
|
| 1066 |
-
if current_user.role not in [
|
| 1067 |
-
AppRole.PLATFORM_ADMIN, AppRole.PROJECT_MANAGER, AppRole.DISPATCHER,
|
| 1068 |
-
AppRole.CLIENT_ADMIN, AppRole.CONTRACTOR_ADMIN
|
| 1069 |
-
]:
|
| 1070 |
-
raise HTTPException(
|
| 1071 |
-
status_code=status.HTTP_403_FORBIDDEN,
|
| 1072 |
-
detail="Only managers and administrators can view team statistics"
|
| 1073 |
-
)
|
| 1074 |
-
|
| 1075 |
-
# Build base query
|
| 1076 |
-
query = db.query(Timesheet).filter(
|
| 1077 |
-
Timesheet.deleted_at == None,
|
| 1078 |
-
Timesheet.work_date >= start_date,
|
| 1079 |
-
Timesheet.work_date <= end_date
|
| 1080 |
-
)
|
| 1081 |
-
|
| 1082 |
-
# Apply project filter if provided
|
| 1083 |
-
if project_id:
|
| 1084 |
-
query = query.filter(Timesheet.project_id == project_id)
|
| 1085 |
-
|
| 1086 |
-
# Get all timesheets in range
|
| 1087 |
-
timesheets = query.all()
|
| 1088 |
-
|
| 1089 |
-
# Group by user_id
|
| 1090 |
-
user_timesheets: Dict[UUID, List[Timesheet]] = {}
|
| 1091 |
-
for ts in timesheets:
|
| 1092 |
-
if ts.user_id not in user_timesheets:
|
| 1093 |
-
user_timesheets[ts.user_id] = []
|
| 1094 |
-
user_timesheets[ts.user_id].append(ts)
|
| 1095 |
-
|
| 1096 |
-
# Calculate stats for each user
|
| 1097 |
-
team_stats = []
|
| 1098 |
-
for user_id, user_ts_list in user_timesheets.items():
|
| 1099 |
-
# Get user info
|
| 1100 |
-
user = db.query(User).filter(User.id == user_id).first()
|
| 1101 |
-
if not user:
|
| 1102 |
-
continue
|
| 1103 |
-
|
| 1104 |
-
# Calculate metrics
|
| 1105 |
-
total_days = len(user_ts_list)
|
| 1106 |
-
present_days = sum(1 for t in user_ts_list if t.status == TimesheetStatus.PRESENT)
|
| 1107 |
-
absent_days = sum(1 for t in user_ts_list if t.status == TimesheetStatus.ABSENT)
|
| 1108 |
-
on_leave_days = sum(1 for t in user_ts_list if t.status == TimesheetStatus.ON_LEAVE)
|
| 1109 |
-
sick_leave_days = sum(1 for t in user_ts_list if t.status == TimesheetStatus.SICK_LEAVE)
|
| 1110 |
-
half_day_count = sum(1 for t in user_ts_list if t.status == TimesheetStatus.HALF_DAY)
|
| 1111 |
-
|
| 1112 |
-
attendance_rate = (present_days / total_days * 100) if total_days > 0 else 0
|
| 1113 |
-
absence_rate = (absent_days / total_days * 100) if total_days > 0 else 0
|
| 1114 |
-
|
| 1115 |
-
total_hours_worked = sum(float(t.hours_worked or 0) for t in user_ts_list)
|
| 1116 |
-
average_hours_per_day = (total_hours_worked / present_days) if present_days > 0 else 0
|
| 1117 |
-
|
| 1118 |
-
total_tickets_assigned = sum(t.tickets_assigned for t in user_ts_list)
|
| 1119 |
-
total_tickets_completed = sum(t.tickets_completed for t in user_ts_list)
|
| 1120 |
-
total_tickets_rescheduled = sum(t.tickets_rescheduled for t in user_ts_list)
|
| 1121 |
-
total_tickets_cancelled = sum(t.tickets_cancelled for t in user_ts_list)
|
| 1122 |
-
total_tickets_rejected = sum(t.tickets_rejected for t in user_ts_list)
|
| 1123 |
-
|
| 1124 |
-
average_tickets_per_day = (total_tickets_completed / present_days) if present_days > 0 else 0
|
| 1125 |
-
completion_rate = (total_tickets_completed / total_tickets_assigned * 100) if total_tickets_assigned > 0 else 0
|
| 1126 |
-
|
| 1127 |
-
team_stats.append({
|
| 1128 |
-
"user_id": str(user_id),
|
| 1129 |
-
"user_name": user.name,
|
| 1130 |
-
"user_email": user.email,
|
| 1131 |
-
"role": user.role.value if hasattr(user.role, 'value') else user.role,
|
| 1132 |
-
"total_days": total_days,
|
| 1133 |
-
"present_days": present_days,
|
| 1134 |
-
"absent_days": absent_days,
|
| 1135 |
-
"on_leave_days": on_leave_days,
|
| 1136 |
-
"sick_leave_days": sick_leave_days,
|
| 1137 |
-
"half_day_count": half_day_count,
|
| 1138 |
-
"attendance_rate": round(attendance_rate, 2),
|
| 1139 |
-
"absence_rate": round(absence_rate, 2),
|
| 1140 |
-
"total_hours_worked": round(total_hours_worked, 2),
|
| 1141 |
-
"average_hours_per_day": round(average_hours_per_day, 2),
|
| 1142 |
-
"total_tickets_assigned": total_tickets_assigned,
|
| 1143 |
-
"total_tickets_completed": total_tickets_completed,
|
| 1144 |
-
"total_tickets_rescheduled": total_tickets_rescheduled,
|
| 1145 |
-
"total_tickets_cancelled": total_tickets_cancelled,
|
| 1146 |
-
"total_tickets_rejected": total_tickets_rejected,
|
| 1147 |
-
"average_tickets_per_day": round(average_tickets_per_day, 2),
|
| 1148 |
-
"completion_rate": round(completion_rate, 2)
|
| 1149 |
-
})
|
| 1150 |
-
|
| 1151 |
-
# Sort by completion rate descending (best performers first)
|
| 1152 |
-
team_stats.sort(key=lambda x: x["completion_rate"], reverse=True)
|
| 1153 |
-
|
| 1154 |
-
return {
|
| 1155 |
-
"start_date": start_date,
|
| 1156 |
-
"end_date": end_date,
|
| 1157 |
-
"project_id": str(project_id) if project_id else None,
|
| 1158 |
-
"team_size": len(team_stats),
|
| 1159 |
-
"team_members": team_stats
|
| 1160 |
-
}
|
| 1161 |
-
|
| 1162 |
-
except HTTPException:
|
| 1163 |
-
raise
|
| 1164 |
-
except Exception as e:
|
| 1165 |
-
logger.error(f"Error getting team stats: {str(e)}")
|
| 1166 |
-
raise HTTPException(
|
| 1167 |
-
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| 1168 |
-
detail=f"Failed to get team stats: {str(e)}"
|
| 1169 |
-
)
|
| 1170 |
-
|
| 1171 |
-
|
| 1172 |
# ============================================
|
| 1173 |
# BULK UPDATE / RECALCULATION
|
| 1174 |
# ============================================
|
|
|
|
| 679 |
)
|
| 680 |
|
| 681 |
|
| 682 |
+
# ============================================
|
| 683 |
+
# TEAM STATS (AGGREGATED)
|
| 684 |
+
# ============================================
|
| 685 |
+
|
| 686 |
+
@router.get("/team/stats")
|
| 687 |
+
@require_permission("view_timesheets")
|
| 688 |
+
async def get_team_stats(
|
| 689 |
+
start_date: date = Query(..., description="Start date for statistics"),
|
| 690 |
+
end_date: date = Query(..., description="End date for statistics"),
|
| 691 |
+
project_id: Optional[UUID] = Query(None, description="Filter by specific project"),
|
| 692 |
+
current_user: User = Depends(get_current_active_user),
|
| 693 |
+
db: Session = Depends(get_db)
|
| 694 |
+
):
|
| 695 |
+
"""
|
| 696 |
+
Get aggregated team statistics (all team members' stats in one call).
|
| 697 |
+
|
| 698 |
+
**Authorization:**
|
| 699 |
+
- Managers can view their team stats
|
| 700 |
+
- Admins can view all team stats
|
| 701 |
+
|
| 702 |
+
**Query Parameters:**
|
| 703 |
+
- start_date: Start of date range (required)
|
| 704 |
+
- end_date: End of date range (required)
|
| 705 |
+
- project_id: Filter by specific project (optional)
|
| 706 |
+
|
| 707 |
+
**Returns:**
|
| 708 |
+
Array of user stats with:
|
| 709 |
+
- user_id, user_name, user_email, role
|
| 710 |
+
- Day counts (present, absent, leave)
|
| 711 |
+
- Attendance/absence rates
|
| 712 |
+
- Hours worked
|
| 713 |
+
- Ticket metrics (assigned, completed, completion rate)
|
| 714 |
+
|
| 715 |
+
**Use Cases:**
|
| 716 |
+
- Team performance dashboard
|
| 717 |
+
- Manager overview of all team members
|
| 718 |
+
- Comparative performance analysis
|
| 719 |
+
- Payroll preparation
|
| 720 |
+
"""
|
| 721 |
+
try:
|
| 722 |
+
# Authorization check
|
| 723 |
+
if current_user.role not in [
|
| 724 |
+
AppRole.PLATFORM_ADMIN, AppRole.PROJECT_MANAGER, AppRole.DISPATCHER,
|
| 725 |
+
AppRole.CLIENT_ADMIN, AppRole.CONTRACTOR_ADMIN
|
| 726 |
+
]:
|
| 727 |
+
raise HTTPException(
|
| 728 |
+
status_code=status.HTTP_403_FORBIDDEN,
|
| 729 |
+
detail="Only managers and administrators can view team statistics"
|
| 730 |
+
)
|
| 731 |
+
|
| 732 |
+
# Build base query
|
| 733 |
+
query = db.query(Timesheet).filter(
|
| 734 |
+
Timesheet.deleted_at == None,
|
| 735 |
+
Timesheet.work_date >= start_date,
|
| 736 |
+
Timesheet.work_date <= end_date
|
| 737 |
+
)
|
| 738 |
+
|
| 739 |
+
# Apply project filter if provided
|
| 740 |
+
if project_id:
|
| 741 |
+
query = query.filter(Timesheet.project_id == project_id)
|
| 742 |
+
|
| 743 |
+
# Get all timesheets in range
|
| 744 |
+
timesheets = query.all()
|
| 745 |
+
|
| 746 |
+
# Group by user_id
|
| 747 |
+
user_timesheets: Dict[UUID, List[Timesheet]] = {}
|
| 748 |
+
for ts in timesheets:
|
| 749 |
+
if ts.user_id not in user_timesheets:
|
| 750 |
+
user_timesheets[ts.user_id] = []
|
| 751 |
+
user_timesheets[ts.user_id].append(ts)
|
| 752 |
+
|
| 753 |
+
# Calculate stats for each user
|
| 754 |
+
team_stats = []
|
| 755 |
+
for user_id, user_ts_list in user_timesheets.items():
|
| 756 |
+
# Get user info
|
| 757 |
+
user = db.query(User).filter(User.id == user_id).first()
|
| 758 |
+
if not user:
|
| 759 |
+
continue
|
| 760 |
+
|
| 761 |
+
# Calculate metrics
|
| 762 |
+
total_days = len(user_ts_list)
|
| 763 |
+
present_days = sum(1 for t in user_ts_list if t.status == TimesheetStatus.PRESENT)
|
| 764 |
+
absent_days = sum(1 for t in user_ts_list if t.status == TimesheetStatus.ABSENT)
|
| 765 |
+
on_leave_days = sum(1 for t in user_ts_list if t.status == TimesheetStatus.ON_LEAVE)
|
| 766 |
+
sick_leave_days = sum(1 for t in user_ts_list if t.status == TimesheetStatus.SICK_LEAVE)
|
| 767 |
+
half_day_count = sum(1 for t in user_ts_list if t.status == TimesheetStatus.HALF_DAY)
|
| 768 |
+
|
| 769 |
+
attendance_rate = (present_days / total_days * 100) if total_days > 0 else 0
|
| 770 |
+
absence_rate = (absent_days / total_days * 100) if total_days > 0 else 0
|
| 771 |
+
|
| 772 |
+
total_hours_worked = sum(float(t.hours_worked or 0) for t in user_ts_list)
|
| 773 |
+
average_hours_per_day = (total_hours_worked / present_days) if present_days > 0 else 0
|
| 774 |
+
|
| 775 |
+
total_tickets_assigned = sum(t.tickets_assigned for t in user_ts_list)
|
| 776 |
+
total_tickets_completed = sum(t.tickets_completed for t in user_ts_list)
|
| 777 |
+
total_tickets_rescheduled = sum(t.tickets_rescheduled for t in user_ts_list)
|
| 778 |
+
total_tickets_cancelled = sum(t.tickets_cancelled for t in user_ts_list)
|
| 779 |
+
total_tickets_rejected = sum(t.tickets_rejected for t in user_ts_list)
|
| 780 |
+
|
| 781 |
+
average_tickets_per_day = (total_tickets_completed / present_days) if present_days > 0 else 0
|
| 782 |
+
completion_rate = (total_tickets_completed / total_tickets_assigned * 100) if total_tickets_assigned > 0 else 0
|
| 783 |
+
|
| 784 |
+
team_stats.append({
|
| 785 |
+
"user_id": str(user_id),
|
| 786 |
+
"user_name": user.name,
|
| 787 |
+
"user_email": user.email,
|
| 788 |
+
"role": user.role.value if hasattr(user.role, 'value') else user.role,
|
| 789 |
+
"total_days": total_days,
|
| 790 |
+
"present_days": present_days,
|
| 791 |
+
"absent_days": absent_days,
|
| 792 |
+
"on_leave_days": on_leave_days,
|
| 793 |
+
"sick_leave_days": sick_leave_days,
|
| 794 |
+
"half_day_count": half_day_count,
|
| 795 |
+
"attendance_rate": round(attendance_rate, 2),
|
| 796 |
+
"absence_rate": round(absence_rate, 2),
|
| 797 |
+
"total_hours_worked": round(total_hours_worked, 2),
|
| 798 |
+
"average_hours_per_day": round(average_hours_per_day, 2),
|
| 799 |
+
"total_tickets_assigned": total_tickets_assigned,
|
| 800 |
+
"total_tickets_completed": total_tickets_completed,
|
| 801 |
+
"total_tickets_rescheduled": total_tickets_rescheduled,
|
| 802 |
+
"total_tickets_cancelled": total_tickets_cancelled,
|
| 803 |
+
"total_tickets_rejected": total_tickets_rejected,
|
| 804 |
+
"average_tickets_per_day": round(average_tickets_per_day, 2),
|
| 805 |
+
"completion_rate": round(completion_rate, 2)
|
| 806 |
+
})
|
| 807 |
+
|
| 808 |
+
# Sort by completion rate descending (best performers first)
|
| 809 |
+
team_stats.sort(key=lambda x: x["completion_rate"], reverse=True)
|
| 810 |
+
|
| 811 |
+
return {
|
| 812 |
+
"start_date": start_date,
|
| 813 |
+
"end_date": end_date,
|
| 814 |
+
"project_id": str(project_id) if project_id else None,
|
| 815 |
+
"team_size": len(team_stats),
|
| 816 |
+
"team_members": team_stats
|
| 817 |
+
}
|
| 818 |
+
|
| 819 |
+
except HTTPException:
|
| 820 |
+
raise
|
| 821 |
+
except Exception as e:
|
| 822 |
+
logger.error(f"Error getting team stats: {str(e)}")
|
| 823 |
+
raise HTTPException(
|
| 824 |
+
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
| 825 |
+
detail=f"Failed to get team stats: {str(e)}"
|
| 826 |
+
)
|
| 827 |
+
|
| 828 |
+
|
| 829 |
@router.get("/{timesheet_id}", response_model=TimesheetResponse)
|
| 830 |
@require_permission("view_timesheets")
|
| 831 |
async def get_timesheet(
|
|
|
|
| 1168 |
)
|
| 1169 |
|
| 1170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1171 |
# ============================================
|
| 1172 |
# BULK UPDATE / RECALCULATION
|
| 1173 |
# ============================================
|
src/app/constants/permissions.py
CHANGED
|
@@ -1,4 +1,10 @@
|
|
| 1 |
"""
|
| 2 |
PERMISSIONS Constants
|
|
|
|
|
|
|
|
|
|
| 3 |
"""
|
| 4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
"""
|
| 2 |
PERMISSIONS Constants
|
| 3 |
+
|
| 4 |
+
This module defines all permission strings used in the application.
|
| 5 |
+
These permissions are mapped to roles in app/core/permissions.py
|
| 6 |
"""
|
| 7 |
+
|
| 8 |
+
# Timesheet Permissions
|
| 9 |
+
VIEW_TIMESHEETS = "view_timesheets"
|
| 10 |
+
MANAGE_TIMESHEETS = "manage_timesheets"
|
src/app/core/permissions.py
CHANGED
|
@@ -81,6 +81,9 @@ ROLE_PERMISSIONS: Dict[AppRole, List[str]] = {
|
|
| 81 |
# Project Management
|
| 82 |
"manage_projects",
|
| 83 |
"view_reports",
|
|
|
|
|
|
|
|
|
|
| 84 |
# Inventory Management
|
| 85 |
"view_inventory", # View inventory lists and stats
|
| 86 |
"manage_inventory", # Create, update, delete inventory
|
|
@@ -109,6 +112,9 @@ ROLE_PERMISSIONS: Dict[AppRole, List[str]] = {
|
|
| 109 |
"accept_projects",
|
| 110 |
"view_payroll",
|
| 111 |
"manage_tickets",
|
|
|
|
|
|
|
|
|
|
| 112 |
# Inventory Management
|
| 113 |
"view_inventory", # View inventory lists and stats
|
| 114 |
"manage_inventory", # Create, update, delete inventory
|
|
@@ -137,6 +143,9 @@ ROLE_PERMISSIONS: Dict[AppRole, List[str]] = {
|
|
| 137 |
"create_tickets",
|
| 138 |
"manage_tickets",
|
| 139 |
"approve_expenses",
|
|
|
|
|
|
|
|
|
|
| 140 |
# Inventory Management
|
| 141 |
"view_inventory", # View inventory lists and stats
|
| 142 |
"manage_inventory", # Create, update, delete inventory
|
|
@@ -167,6 +176,9 @@ ROLE_PERMISSIONS: Dict[AppRole, List[str]] = {
|
|
| 167 |
"manage_tickets",
|
| 168 |
"issue_equipment",
|
| 169 |
"approve_expenses",
|
|
|
|
|
|
|
|
|
|
| 170 |
# Inventory Management
|
| 171 |
"view_inventory", # View inventory lists and stats
|
| 172 |
"manage_inventory", # Manage distributions and assignments
|
|
@@ -188,6 +200,8 @@ ROLE_PERMISSIONS: Dict[AppRole, List[str]] = {
|
|
| 188 |
"view_tickets",
|
| 189 |
"update_ticket_status",
|
| 190 |
"log_expenses",
|
|
|
|
|
|
|
| 191 |
# Inventory Management (Self-Service)
|
| 192 |
"record_collection", # Record what they collected from hub
|
| 193 |
"view_inventory", # View available inventory at hubs
|
|
|
|
| 81 |
# Project Management
|
| 82 |
"manage_projects",
|
| 83 |
"view_reports",
|
| 84 |
+
# Timesheet Management
|
| 85 |
+
"view_timesheets", # View team timesheets
|
| 86 |
+
"manage_timesheets", # Create, update timesheets
|
| 87 |
# Inventory Management
|
| 88 |
"view_inventory", # View inventory lists and stats
|
| 89 |
"manage_inventory", # Create, update, delete inventory
|
|
|
|
| 112 |
"accept_projects",
|
| 113 |
"view_payroll",
|
| 114 |
"manage_tickets",
|
| 115 |
+
# Timesheet Management
|
| 116 |
+
"view_timesheets", # View team timesheets
|
| 117 |
+
"manage_timesheets", # Create, update timesheets
|
| 118 |
# Inventory Management
|
| 119 |
"view_inventory", # View inventory lists and stats
|
| 120 |
"manage_inventory", # Create, update, delete inventory
|
|
|
|
| 143 |
"create_tickets",
|
| 144 |
"manage_tickets",
|
| 145 |
"approve_expenses",
|
| 146 |
+
# Timesheet Management
|
| 147 |
+
"view_timesheets", # View team timesheets
|
| 148 |
+
"manage_timesheets", # Create, update timesheets
|
| 149 |
# Inventory Management
|
| 150 |
"view_inventory", # View inventory lists and stats
|
| 151 |
"manage_inventory", # Create, update, delete inventory
|
|
|
|
| 176 |
"manage_tickets",
|
| 177 |
"issue_equipment",
|
| 178 |
"approve_expenses",
|
| 179 |
+
# Timesheet Management
|
| 180 |
+
"view_timesheets", # View team timesheets
|
| 181 |
+
"manage_timesheets", # Create, update timesheets
|
| 182 |
# Inventory Management
|
| 183 |
"view_inventory", # View inventory lists and stats
|
| 184 |
"manage_inventory", # Manage distributions and assignments
|
|
|
|
| 200 |
"view_tickets",
|
| 201 |
"update_ticket_status",
|
| 202 |
"log_expenses",
|
| 203 |
+
# Timesheet Management (Self-Service)
|
| 204 |
+
"view_timesheets", # View own timesheets only
|
| 205 |
# Inventory Management (Self-Service)
|
| 206 |
"record_collection", # Record what they collected from hub
|
| 207 |
"view_inventory", # View available inventory at hubs
|