- Implemented the main view for Supplemental Feeds, displaying clients with Merchant Account IDs and their associated feed files.
- Added styling for the feeds page and its components, including headers, empty states, and dropdown menus for syncing actions.
- Created backend logic to generate supplemental feeds for clients, including file handling and data sanitization.
- Integrated new routes and views for managing feeds, ensuring proper data retrieval and display.
- Updated navigation to include the new Supplemental Feeds section.
- Added necessary documentation for CRON job management related to feed generation.
- Introduced a new button to toggle the status of keywords between PAUSED and ENABLED in the keywords table.
- Added corresponding styles for the toggle button to enhance user experience.
- Updated the keywords table rendering logic to display the status and toggle button correctly.
- Created a new migration to add a 'status' column to the 'campaign_keywords' table, defaulting to 'ENABLED'.
- Added a toolbar for adding keywords in the campaign terms view.
- Implemented match type change functionality with a confirmation dialog.
- Added delete functionality for keywords with confirmation.
- Updated styles for new buttons and icons in the campaign terms view.
- Enhanced product view with warning icons for product alerts and corresponding modal display.
- Updated product table to include a new column for warnings and adjusted column visibility settings.
- Documented project overview, code style conventions, suggested commands, and task completion checklist.
- Added a search input for filtering products by name or ID.
- Introduced a custom label input for filtering by CL4.
- Implemented debounce functionality for both filters to optimize performance.
- Updated local storage handling to persist filter values.
- Modified styles for new filter groups in the product layout.
chore: add .serena configuration files
- Created .serena/.gitignore to exclude cache files.
- Added .serena/project.yml for project configuration.
fix: add status column to campaign_ad_groups table
- Altered the campaign_ad_groups table to include a status column with ENUM values 'active' and 'paused'./c
- Implemented Gemini API service for generating optimized product titles and descriptions based on Google Merchant Center guidelines.
- Added settings for Gemini API key and model selection in user settings.
- Enhanced product management views to support AI-generated suggestions for titles and descriptions.
- Enabled state saving for various data tables across campaign, terms, logs, and products views.
- Introduced AI prompt templates for generating product descriptions and categories.
- Implemented a new logs page with filters for level, source, and date range.
- Added a data table to display logs with pagination and sorting capabilities.
- Created backend functionality to fetch logs data based on filters.
- Introduced a new Logs class for handling log data operations.
- Added a new database migration for the logs table.
- Enhanced UI with custom checkbox styles for better user experience.
- Updated navigation to include a link to the logs page.
- Implemented a new PHP script to retrieve insights for the last N days (default 30).
- Supports command-line options for token, account ID, days, API version, and output file.
- Fetches data at campaign, adset, and ad levels, with filtering for active statuses.
- Handles JSON output and optional file saving, including directory creation if necessary.
- Includes error handling for cURL requests and JSON responses.
- Added a new field to display the cron URL plan in user settings.
- Updated JavaScript to handle the new plan data.
refactor: Unify product model and migrate data
- Migrated product data from `products_data` to `products` table.
- Added new columns to `products` for better data organization.
- Created `products_aggregate` table for storing aggregated product metrics.
chore: Drop deprecated products_data table
- Removed `products_data` table as data is now stored in `products`.
feat: Add merchant URL flags to products
- Introduced flags for tracking merchant URL status in `products` table.
- Normalized product URLs to handle empty or invalid values.
feat: Link campaign alerts to specific products
- Added `product_id` column to `campaign_alerts` table for better tracking.
- Created an index for efficient querying of alerts by product.
chore: Add debug scripts for client data inspection
- Created debug scripts to inspect client data from local and remote databases.
- Included error handling and output formatting for better readability.
- Introduced a new `CampaignAlerts` class for handling alerts logic.
- Added database migration for `campaign_alerts` table creation.
- Implemented methods for fetching, marking, and deleting alerts in the `CampaignAlerts` factory class.
- Created a new view for displaying campaign alerts with filtering options.
- Updated the main client view to include a badge for the number of alerts.
- Enhanced sync functionality to support campaigns and products separately.
- Adjusted styles for alert badges in the UI.
- Updated SCSS styles for new campaign sync buttons and dropdowns.
- Refactored main_view.php to replace the single select for campaigns with a multi-select dropdown.
- Added JavaScript functions to handle dropdown interactions and sync status updates.
- Introduced sync status bars for clients in main_view.php.
- Created new database migrations for client sync flags and cron sync status tracking.