Add timeline tracking features with database schema updates
- Introduced new tables `timeline_footprints` and `timeline_activities` to manage employee location data and activity records. - Updated `company_settings` to include `gps_interval_seconds` and `checkout_warning_radius_meters` for enhanced tracking configuration. - Implemented foreign key constraints to ensure data integrity between new tables and existing `employees`, `customers`, and `visits` tables. - Created services and controllers for handling timeline activities and footprints, including ingestion and retrieval of data. - Enhanced DTOs and validation logic to support new fields and ensure correct data formats in API requests. - Added unit and integration tests to validate the new functionalities and ensure proper handling of timeline records. - Created migration scripts to apply the necessary database schema changes for the new features.
This commit is contained in:
@@ -107,4 +107,23 @@ describe('Company settings (e2e)', () => {
|
||||
(updated.body as { cycleStartDate: number }).cycleStartDate,
|
||||
);
|
||||
});
|
||||
|
||||
it('upserts timeline tracking settings', async () => {
|
||||
const updated = await request(app.getHttpServer())
|
||||
.patch('/settings')
|
||||
.set('Authorization', `Bearer ${adminAccessToken}`)
|
||||
.send({
|
||||
gpsIntervalSeconds: 15,
|
||||
checkoutWarningRadiusMeters: 300,
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
expect((updated.body as { gpsIntervalSeconds: number }).gpsIntervalSeconds).toBe(
|
||||
15,
|
||||
);
|
||||
expect(
|
||||
(updated.body as { checkoutWarningRadiusMeters: number })
|
||||
.checkoutWarningRadiusMeters,
|
||||
).toBe(300);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user