Jeppe Bundgaard
b547a8b029
Refactor permission handling to leverage standardized "forbidden" responses and enhance unit test coverage.
2026-03-19 15:59:25 +01:00
Jeppe Bundgaard
3752fdec4c
Add support for "forbidden" response with missing permissions in Nginx response handler
2026-03-19 14:39:23 +01:00
Jeppe Bundgaard
60f6cbee84
Enhance CORS handling with dynamic origin validation and credentials support in Nginx. Update Traefik to include additional allowed origins.
2026-03-18 14:15:28 +01:00
Jeppe Bundgaard
6b928cfce7
Add PreRenderDynamicImagesCron for dynamic image variant caching and idempotency guard for order bookings.
2026-03-18 13:59:48 +01:00
Jeppe Bundgaard
90acf50b55
Add idempotency handling for order booking creation using Redis to prevent duplicate requests.
2026-03-18 13:42:47 +01:00
Jeppe Bundgaard
da2cbee987
Disable sending welcome emails to info@truckwash.dk as requested by Christian.
2026-03-18 13:29:37 +01:00
Jeppe Bundgaard
7c55beae42
Refactor self-serve wash flow to decouple visible question logic, improve condition evaluation, and handle nullable fields in the OpenAPI spec.
2026-03-18 13:05:41 +01:00
Jeppe Bundgaard
f04f79e3da
Update Traefik configuration with enhanced routing rules, local IP allowlist for dashboard access, new strip prefix middleware, and extended CORS origins. Add ACME account configurations for certificate management.
2026-03-18 10:58:17 +01:00
Jeppe Bundgaard
db42f9ef95
Add staging environment configuration for Caddy, Nginx, and Traefik with updated routing and logging settings
2026-03-18 10:32:41 +01:00
Jeppe Bundgaard
b3772293f3
Add auto-generated documentation for new API endpoints: branding option, button press webhook, and customer attribute.
2026-03-17 16:51:10 +01:00
Jeppe Bundgaard
6cc5dc2210
Add initial Copenhagen Truck Wash API documentation, including API overview, authentication, error handling, introduction, and Writerside configuration.
2026-03-17 15:55:11 +01:00
Jeppe Bundgaard
979b0f8fac
Add atomic reservation support in Redis for goal alert deduplication with expiration. Update Cron logic and add unit tests for validation.
2026-03-17 15:23:02 +01:00
Jeppe Bundgaard
bd4a90cdaa
Add bulk booked invoice line handling and optimized distribution logic for department 75. Update unit tests, Economic endpoint URL encoding, and service integration.
2026-03-17 14:53:20 +01:00
Jeppe Bundgaard
6aa04eb951
Add logic for booked department 75 redistribution with fixed pricing and subscription weights. Update OpenAPI spec, unit tests, and service integration.
2026-03-16 13:40:03 +01:00
Jeppe Bundgaard
425c2c9142
Update README to include self-serve module implementation and API guide location
2026-03-16 13:08:21 +01:00
Jeppe Bundgaard
2ecae070a2
Add documentation for the self-serve module, detailing architecture, flow, API routes, domain model, runtime tables, and eligibility rules. Includes end-to-end examples and PHP usage.
2026-03-16 13:06:17 +01:00
Jeppe Bundgaard
39ab007281
Update Copilot workflow to create GitHub issues for assigned tasks with proper permissions and repository checkout
2026-03-16 11:41:00 +01:00
Jeppe Bundgaard
d890d589ff
Add reusable routes for department self-serve machine types, n8n workflows, and executions, with corresponding unit tests and service integration.
2026-03-16 11:36:48 +01:00
Jeppe Bundgaard
ca573783d2
Add support for department_goals entity in system search with title resolution logic and unit tests
2026-03-15 18:58:52 +01:00
Jeppe Bundgaard
78a8dd35b9
Add system_search_document_index class to manage document indexing for system search with table creation, entity-specific document builders, and index refresh logic.
2026-03-13 13:58:48 +01:00
Jeppe Bundgaard
1e1576fe87
Add system_search_economic_customer_index class with table creation, refresh logic, and integration into system search fields, synonyms, and entity matching. Update service logic, unit tests, and cron tasks accordingly.
2026-03-13 01:52:33 +01:00
Jeppe Bundgaard
5be31bee1c
Extend system search to include local e-conomic customer index fields, synonym expansion (e.g., rabat -> discount), and enhanced entity matching. Update OpenAPI spec, unit tests, and cron sync tasks accordingly.
2026-03-13 00:59:40 +01:00
Jeppe Bundgaard
efc5906974
Expand system search to include users entity type with comprehensive OpenAPI spec updates, route adjustments, and unit test coverage.
2026-03-12 23:09:50 +01:00
Jeppe Bundgaard
a22a3f4ee9
Add comprehensive unit tests for invoicing period cache logic, system search behavior, and OpenAPI spec coverage. Expand search service with generic entity support and refine association type handling.
2026-03-12 21:21:14 +01:00
Jeppe Bundgaard
1190290899
Strengthen SQL injection safeguards across objects and traits, add input validation and sanitization, and refine query efficiency with deduplication and null checks.
2026-03-12 20:36:08 +01:00
Jeppe Bundgaard
a5963da4e6
Cap expanded query terms, aliases, and hints to prevent amplification, add permission-context scoping for query cache, and encapsulate term capping logic in helper methods with relevant tests.
2026-03-12 20:20:43 +01:00
Jeppe Bundgaard
6e887b315f
Introduce a centralized search service with OpenAI-powered intent parsing and caching
2026-03-12 20:14:06 +01:00
Jeppe Bundgaard
f651309d6a
Add caching for Economic V2 distribution responses and optimize service methods with localized in-memory caches
2026-03-12 19:32:57 +01:00
Jeppe Bundgaard
69c7c834d9
Update OpenAPI spec to add InvoicingWashSubscriptionsDistributionResponse schema and reference it in the related endpoint
2026-03-12 18:51:10 +01:00
Jeppe Bundgaard
4ef20a1c90
Add economic V2 modules for history backfill, comparison, and distribution services.
2026-03-12 17:57:27 +01:00
Jeppe Bundgaard
72454ff328
Update OpenAPI spec to include application/json response schemas and add optional request bodies where applicable
2026-03-12 16:51:18 +01:00
Jeppe Bundgaard
4523115584
Introduce centralized date normalization and duplicate filtering for invoicing logic, and add comprehensive unit tests
2026-03-12 16:09:54 +01:00
Jeppe Bundgaard
2ca29a77f1
Optimize order and transaction processing logic with caching, and implement opt-in Slack summaries to reduce request latency.
2026-03-12 16:00:57 +01:00
Jeppe Bundgaard
07dab83e36
Add caching for department metadata and invoicing exclusion checks, optimize department resolution logic in invoicing route
2026-03-12 14:40:47 +01:00
Jeppe Bundgaard
0deeb7f121
Add scripts to clone live DB into debug DB for local development
2026-03-12 14:10:06 +01:00
Jeppe Bundgaard
c78ea57409
Add mysql-debug to local development stack and update related configurations
2026-03-12 13:48:07 +01:00
Jeppe Bundgaard
5cb197898d
Improve live DB clone speed
2026-03-12 13:26:22 +01:00
Jeppe Bundgaard
e91dda0799
Add run scripts and actions setup
2026-03-12 12:27:46 +01:00
Jeppe Bundgaard
e7ff44bf50
Return vehicle subscriptions array
2026-03-12 12:19:59 +01:00
Jeppe Bundgaard
ddc45bf206
Update getCustomersWithVehicleSubscriptions to exclude fixed pricing customers and remove unused return statement in invoicing route
2026-03-12 12:17:52 +01:00
Jeppe Bundgaard
be358309d6
Add schema definitions for InvoicingFixedPricingDistributionResponse and related components in OpenAPI spec
2026-03-12 11:26:25 +01:00
Jeppe Bundgaard
bd36540f2b
Add schema definitions and responses for Weather API endpoints in OpenAPI spec
2026-03-12 09:19:17 +01:00
Jeppe Bundgaard
36c9472a40
Integrate historical data into weather forecast, sort timeline entries, and update local development server URL in OpenAPI configuration.
2026-03-11 14:31:39 +01:00
Jeppe Bundgaard
6713a67eb5
Update generateDirectDownloadUrl to use static https://api.truckwash.io host and simplify URL generation logic
2026-03-11 11:25:53 +01:00
Jeppe Bundgaard
44a0146c9f
Enable permission checks, adjust weekly iteration logic, and update cache key for department weekly results functionality
2026-03-11 11:21:14 +01:00
Jeppe Bundgaard
ed19a7482d
Add offset support to getFieldsWhereContaining for enhanced query control
2026-03-11 11:07:48 +01:00
Jeppe Bundgaard
15a7a7b8a5
Add weekly department results route, enhance date handling in invoicing and statistics logic, and improve Slack notification configuration
2026-03-11 10:52:49 +01:00
Jeppe Bundgaard
4945abfd8e
Add new route for superuser invoicing period distribution and enhance date handling logic
2026-03-10 11:01:11 +01:00
Jeppe Bundgaard
d82c7d88ec
Implement Bird gate IVR flow
2026-03-09 11:03:45 +01:00
Jeppe Bundgaard
682bf8151c
Introduce Bird module with API integration for voice calls and number management, along with configurable channelId and workplaceId.
2026-03-09 10:18:16 +01:00
Jeppe Bundgaard
16bcc3a00c
Add custom monthly target calculation in goals_progress_alert_renderer for specific periods.
2026-03-09 09:58:48 +01:00
Jeppe Bundgaard
6bb026ad61
Merge remote-tracking branch 'origin/codex/setup-ingoing-call-automation-for-bird' into codex/setup-ingoing-call-automation-for-bird
...
# Conflicts:
# services/nginx/app/routes/birdVoiceWebhooksRoute.php
2026-03-09 09:46:39 +01:00
Jeppe Bundgaard
5d1980768a
Refactor birdVoiceWebhooksRoute to simplify gate handling by removing single-gate auto-selection logic, enhance multi-gate prompt text, and improve configuration parsing in callGateToOpen.
2026-03-04 16:11:54 +01:00
Jeppe Bundgaard
d24a2c7cec
Refactor birdVoiceWebhooksRoute to simplify gate handling by removing single-gate auto-selection logic, enhance multi-gate prompt text, and improve configuration parsing in callGateToOpen.
2026-03-04 14:39:30 +01:00
Jeppe Bundgaard
72a4c91e5f
Refactor Bird API client to extract reusable executeCallAndHangupWhenAccepted method, update callGateAndHangupWhenAccepted and test outbound call logic to use shared implementation, and enhance timeout handling.
2026-03-04 14:24:11 +01:00
Jeppe Bundgaard
da8a01479b
Add callGateAndHangupWhenAccepted method to Bird API client, refactor gate opening logic in birdVoiceWebhooksRoute, and implement separate entrance/exit gate handling in department_gates_o.
2026-03-04 14:16:53 +01:00
Jeppe Bundgaard
342209fd2f
Add input gathering feature to Bird API client and routes, integrate multi-gate selection flow in birdVoiceWebhooksRoute, and enhance error handling for invalid or expired sessions.
2026-03-04 13:43:19 +01:00
Jeppe Bundgaard
84ba2a1fad
Localize user-facing messages in birdVoiceWebhooksRoute to Danish.
2026-03-04 13:25:28 +01:00
Jeppe Bundgaard
4f5ce36667
Simplify getCallerDepartments in birdVoiceWebhooksRoute by removing redundant user and subuser handling, reducing logic to fetch visible department IDs.
2026-03-04 13:20:23 +01:00
Jeppe Bundgaard
db41842162
Enhance birdVoiceWebhooksRoute to handle automated gate opening via inbound calls, introduce gate/relay identification methods, refactor phone normalization logic, and improve error handling for unmatched destinations and departments.
2026-03-04 13:13:37 +01:00
Jeppe Bundgaard
96629cba0d
Add sayMessage method to Bird API client, extend birdVoiceWebhooksRoute with TTS capability for inbound calls, introduce /bird/voice/calls/{id}/say route, and update OpenAPI spec accordingly.
2026-03-04 12:47:44 +01:00
Jeppe Bundgaard
a69df10b77
Add birdVoiceWebhooksRoute to handle incoming voice call webhooks, support fallback workspace and channel configuration, and send Slack notifications for inbound calls
2026-03-04 10:57:17 +01:00
Jeppe Bundgaard
3d2e8396cc
Replace inline schemas with reusable BirdVoiceCallListResponse, BirdVoiceCallSingleResponse, and BirdTestOutboundCallResponse components in OpenAPI spec, define new BirdVoiceCall schema, and require permissions for Bird voice call listing
2026-03-04 10:50:10 +01:00
Jeppe Bundgaard
cbac9181f6
Refactor Bird API routes to support fallback workspace and channel configuration, centralize helper methods, and update OpenAPI spec to reflect optional parameters.
2026-03-04 10:42:33 +01:00
Jeppe Bundgaard
98203282ba
Replace inline schemas with reusable BirdNumberListResponse and BirdNumberSingleResponse components in OpenAPI spec, and define new BirdNumber and BirdNumberCapability schemas.
2026-03-04 10:31:32 +01:00
Jeppe Bundgaard
70b7f5de87
Add workspace support to Bird numbers API and update routes, methods, and tests accordingly
2026-03-04 10:28:36 +01:00
Jeppe Bundgaard
b46d29c87f
Add validation to ensure orders have transactions and wash certificates attached before sending to customers
2026-03-03 15:07:26 +01:00
Jeppe Bundgaard
7a43fbf383
Add department_relay_config and department_gate_config classes and refactor gate/relay handling logic to use strongly-typed configuration models
2026-03-03 12:24:01 +01:00
Jeppe Bundgaard
29b6df381e
Add department_relays and department_gates object classes to support relay and gate management for departments
2026-03-03 11:47:11 +01:00
Jeppe Bundgaard
a62bcdb47d
Add Redis-based caching for department lane dynamic images to improve performance and reduce processing overhead
2026-03-02 16:34:46 +01:00
Jeppe Bundgaard
7efc73d19d
Add dynamic_image_id to guest lane response and streamline department lane image access logic
2026-03-02 16:16:13 +01:00
Jeppe Bundgaard
80701117f4
Add include_lanes query parameter to guest departments endpoint and define DepartmentGuest and DepartmentLaneGuest schemas in OpenAPI documentation
2026-03-02 13:18:02 +01:00
Jeppe Bundgaard
24842ceaee
Add support for fetching self-serve status in departments and include it in guest route responses
2026-03-02 13:13:55 +01:00
Jeppe Bundgaard
3d4f9d9973
Update Redis key for Monday message tracking to
2026-03-02 12:30:11 +01:00
Jeppe Bundgaard
c1145495a0
Move Monday department Slack notifications logic to GoalsProgressAlertsCron and remove duplicate implementation from exampleRoute.
2026-03-02 12:25:10 +01:00
Jeppe Bundgaard
78a6860eca
Remove .env file from version control and update .gitignore to exclude it permanently.
2026-02-27 03:22:03 +01:00
Jeppe Bundgaard
cc77066617
Reapply "Update Bird module to use AccessKey authorization header instead of Bearer, improve error handling, and add support for workspace/channel configuration."
...
This reverts commit 1087ffb413 .
2026-02-27 03:15:38 +01:00
Jeppe Bundgaard
1087ffb413
Revert "Update Bird module to use AccessKey authorization header instead of Bearer, improve error handling, and add support for workspace/channel configuration."
...
This reverts commit 2ad9bcfd37 .
2026-02-27 03:09:48 +01:00
Jeppe Bundgaard
2ad9bcfd37
Update Bird module to use AccessKey authorization header instead of Bearer, improve error handling, and add support for workspace/channel configuration.
2026-02-27 03:08:28 +01:00
Jeppe Bundgaard
52b467fe59
Update configuration response schemas in OpenAPI documentation to include detailed data structures
2026-02-27 01:55:22 +01:00
Jeppe Bundgaard
abd33ed6d9
Add Bird configuration endpoints (GET/POST) and update OpenAPI documentation
2026-02-27 01:38:45 +01:00
Jeppe Bundgaard
32f017778f
Add voice call management endpoints and enhance logging for HTTP requests
2026-02-27 01:29:32 +01:00
Jeppe Bundgaard
a0727cd14e
Add optional per-department weekly targets and update related calculations
2026-02-27 01:11:22 +01:00
Jeppe Bundgaard
f74210bca8
Add date range fields to goal criteria and update OpenAPI documentation
2026-02-27 00:46:30 +01:00
Jeppe Bundgaard
ddc35fd21a
Enhance goal progress schema by adding year and to-date calculations, and improve descriptions for clarity
2026-02-27 00:41:31 +01:00
Jeppe Bundgaard
647b7f2d94
Refactor progress calculation to avoid mutating instance and improve clarity
2026-02-27 00:32:41 +01:00
Jeppe Bundgaard
ea7633a908
Enhance departmental goal tracking by adding yearly and to-date progress calculations
2026-02-27 00:31:24 +01:00
Jeppe Bundgaard
ece9f5108a
Enhance progress tracking by adding yearly and to-date calculations for departmental targets
2026-02-27 00:23:02 +01:00
Jeppe Bundgaard
bf636c0108
Add configuration files for HTTP client and Nginx logs visualization
2026-02-26 23:01:59 +01:00
Jeppe Bundgaard
fc9d7882ae
Refactor user retrieval logic to improve existence check for customer numbers
2026-02-26 22:51:37 +01:00
Jeppe Bundgaard
0ce9e79cb7
Update Traefik configuration to support additional domains and optimize certificate resolvers
2026-02-25 17:09:22 +01:00
Jeppe Bundgaard
88f4f34c34
Update department daily targets to support floats
...
- Refactored `department_daily_targets` logic to accept and process float values instead of integers.
- Adjusted relevant type declarations, validations, and calculations in `GoalsCriteria`.
- Updated OpenAPI schema to align with new data type for per-department daily targets.
2026-02-25 14:40:26 +01:00
Jeppe Bundgaard
49f07c40c8
Add time-based progress tracking and department-specific target calculations
...
- Added support for `today`, `week`, and `month` progress tracking in `GoalsCriteria`.
- Introduced `setTimeframeByName` method to manage time-based progress criteria.
- Enhanced `calculateProgressFromArray` and `calculateProgressDetailsFromArray` to include customizable timeframes.
- Updated departmental progress calculations with detailed breakdowns for multiple time periods.
- Replaced obsolete single-value progress tracking with comprehensive progress details.
2026-02-25 14:30:03 +01:00
Jeppe Bundgaard
90959c6b41
Expand criteria type enums and add goal progress tracking schema updates
...
- Added new enum values (`REVENUE`, `VISITS`, `NONE`) for `Criteria type` in `GoalsCriteria`.
- Introduced `GoalProgressDetails` schema for tracking progress metrics (count, target).
- Extended `DepartmentGoal` to include time-based progress tracking (`today`, `week`, `month`) and departmental distribution of progress.
2026-02-25 14:29:56 +01:00
Jeppe Bundgaard
cc494583e0
Add support for time-based departmental progress tracking
...
- Introduced calculation of departmental progress for today, week, and month in `department_goals_o.php`.
- Removed unnecessary blank line in `object_property.php` for code clarity.
2026-02-25 14:20:25 +01:00
Jeppe Bundgaard
11a677416b
Enhance department goal criteria handling
...
- Refactored department daily targets logic for optimization and better maintainability.
- Ensured department-specific targets are validated, sanitized, and consistently applied in updates.
- Improved database interaction safety by preventing unnecessary updates for unchanged object properties.
- Adjusted route and API behavior for criteria and department updates to handle validations comprehensively.
2026-02-25 14:15:19 +01:00
Jeppe Bundgaard
ffc5d6bc21
Add support for per-department custom daily targets
...
- Introduced `department_daily_targets` field in criteria, renderer, and API to define daily target overrides for departments.
- Enhanced daily target logic to honor per-department overrides while maintaining backward compatibility.
- Updated SMS, email, and Slack renderers for consistent enforcement of text length limits with fallback to non-mbstring functions.
- Refactored order item update logic to improve database interaction safety by using setters.
2026-02-25 13:03:04 +01:00
Jeppe Bundgaard
5cc311ae32
Add Redis-based permission caching for users and subusers
...
- Introduced Redis-backed caching for user and subuser permission evaluations in the `route_t` trait, reducing database queries.
- Enhanced `Redis` class with methods for permission caching: `cache_permission`, `get_permission`, and `clear_permission`.
- Added test coverage for the new caching logic in `PermissionRedisCacheTest.php`.
- Implemented Redis caching for authentication sessions with `cache_auth_session`, `get_auth_session`, and `clear_auth_session`.
- Improved CORS handling for preflight requests in `index.php`.
2026-02-24 15:00:22 +01:00
Jeppe Bundgaard
2534ffb1b9
Add Redis caching to autoloader for improved class and module loading performance
...
- Integrated Redis caching in the autoloading process to store and retrieve class and file paths dynamically.
- Added fallback mechanisms for Redis errors to ensure compatibility.
- Cached module directories and individual class paths with expiration to enhance performance and reduce filesystem scans.
2026-02-24 13:55:34 +01:00
Jeppe Bundgaard
e8f0c630cf
Remove redundant require_once statement in bird.php.
2026-02-24 13:38:30 +01:00