- Added comprehensive product logging to match order detail level - Moved all debug console messages to proper log files - Added JSON structure analysis logging for both products and orders - Enhanced per-page progress tracking with counts and warnings - Unified logging format with [PRODUCTS] and [ORDERS] prefixes - Removed SET STEP ON debug statement - All debug information now properly logged instead of console output 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
130 lines
4.4 KiB
Markdown
130 lines
4.4 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
This is a Visual FoxPro 9 project that interfaces with the GoMag e-commerce API. The application retrieves both product and order data from GoMag's REST API endpoints with full pagination support and comprehensive error handling.
|
|
|
|
## Architecture
|
|
|
|
- **Main Application**: `gomag-vending.prg` - Primary Visual FoxPro script with pagination support
|
|
- **Utility Module**: `utils.prg` - INI file handling, logging, and helper functions
|
|
- **JSON Library**: `nfjson/` - Third-party JSON parsing library for VFP
|
|
- **Technology**: Visual FoxPro 9 with WinHttp.WinHttpRequest.5.1 for HTTP requests
|
|
- **API Integration**: GoMag REST API v1 for products and orders management
|
|
|
|
## Core Components
|
|
|
|
### gomag-vending.prg
|
|
Main application script with:
|
|
- Complete pagination support for products and orders
|
|
- Configurable API settings via INI file
|
|
- Comprehensive error handling and logging
|
|
- Rate limiting compliance (1-second delays between requests)
|
|
- JSON array output generation for both products and orders
|
|
|
|
### utils.prg
|
|
Utility functions module containing:
|
|
- INI file operations (`ReadPini`, `WritePini`, `LoadSettings`)
|
|
- Logging system (`InitLog`, `LogMessage`, `CloseLog`)
|
|
- Connectivity testing (`TestConnectivity`)
|
|
- URL encoding utilities (`UrlEncode`)
|
|
- Default configuration creation (`CreateDefaultIni`)
|
|
|
|
### settings.ini
|
|
Configuration file with sections:
|
|
- `[API]` - API endpoints, credentials, and headers
|
|
- `[PAGINATION]` - Page size limits
|
|
- `[OPTIONS]` - Feature toggles for products/orders retrieval
|
|
- `[FILTERS]` - Date range filters for orders
|
|
|
|
## Development Commands
|
|
|
|
### Running the Application
|
|
```foxpro
|
|
DO gomag-vending.prg
|
|
```
|
|
|
|
### Running from Windows Command Line
|
|
Use the provided batch file:
|
|
```cmd
|
|
run-gomag.bat
|
|
```
|
|
|
|
Direct execution with Visual FoxPro:
|
|
```cmd
|
|
"C:\Program Files (x86)\Microsoft Visual FoxPro 9\vfp9.exe" -T "gomag-vending.prg"
|
|
```
|
|
|
|
## Configuration Management
|
|
|
|
The application uses `settings.ini` for all configuration. Key settings:
|
|
|
|
### Required Configuration
|
|
- `ApiKey` - Your GoMag API key
|
|
- `ApiShop` - Your shop URL (e.g., "https://yourstore.gomag.ro")
|
|
|
|
### Feature Control
|
|
- `GetProducts` - Set to "1" to retrieve products, "0" to skip
|
|
- `GetOrders` - Set to "1" to retrieve orders, "0" to skip
|
|
- `OrderDaysBack` - Number of days back to retrieve orders (default: 7)
|
|
|
|
### Pagination
|
|
- `Limit` - Records per page (default: 100, max recommended for GoMag API)
|
|
|
|
## API Integration Details
|
|
|
|
### Authentication
|
|
- Header-based authentication using `Apikey` and `ApiShop` headers
|
|
- User-Agent must differ from "PostmanRuntime"
|
|
|
|
### Endpoints
|
|
- Products: `https://api.gomag.ro/api/v1/product/read/json?enabled=1`
|
|
- Orders: `https://api.gomag.ro/api/v1/order/read/json`
|
|
|
|
### Rate Limiting
|
|
- 1-second pause between paginated requests
|
|
- No specific READ request limitations
|
|
- POST requests limited to ~1 request per second (Leaky Bucket)
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
/
|
|
├── gomag-vending.prg # Main application
|
|
├── utils.prg # Utility functions
|
|
├── settings.ini # Configuration file
|
|
├── run-gomag.bat # Windows launcher
|
|
├── nfjson/ # JSON parsing library
|
|
│ ├── nfjsoncreate.prg
|
|
│ └── nfjsonread.prg
|
|
├── log/ # Generated log files
|
|
├── output/ # Generated JSON files
|
|
└── products-example.json # Sample API response
|
|
```
|
|
|
|
## Output Files
|
|
|
|
### Generated Files
|
|
- `log/gomag_sync_YYYYMMDD_HHMMSS.log` - Detailed execution logs
|
|
- `output/gomag_all_products_YYYYMMDD_HHMMSS.json` - Complete product array
|
|
- `output/gomag_orders_last7days_YYYYMMDD_HHMMSS.json` - Orders array
|
|
|
|
### Error Files
|
|
- `gomag_error_pageN_*.json` - Raw API responses for failed parsing
|
|
- `gomag_error_pageN_*.log` - HTTP error details with status codes
|
|
|
|
## Key Functions
|
|
|
|
### Main Application (gomag-vending.prg)
|
|
- `SaveProductsArray` - Converts paginated product data to JSON array
|
|
- `SaveOrdersArray` - Converts paginated order data to JSON array
|
|
- `MergeProducts` - Combines products from multiple pages
|
|
- `MergeOrdersArray` - Combines orders from multiple pages
|
|
|
|
### Utilities (utils.prg)
|
|
- `LoadSettings` - Loads complete INI configuration into object
|
|
- `InitLog`/`LogMessage`/`CloseLog` - Comprehensive logging system
|
|
- `TestConnectivity` - Internet connection verification
|
|
- `CreateDefaultIni` - Generates template configuration file |