antares_get_data/AGENTS.md

2.1 KiB

Antares Data Exporter - Operational Guide for Agents

This repository contains a synchronous Rust utility that fetches product data from the Antares B2B API and exports it to Excel. Follow these instructions for successful operation and development.

⚙️ Execution & Setup

  1. Setup: Always run cp .env.example .env first, then fill credentials in .env.
  2. Build/Run Order: The intended command sequence is: cargo build --release followed by running the binary (./target/release/antares_get_data).
  3. Development Flow: Use this order when developing or verifying changes:
    • cargo fmt --all -- --check (Linting)
    • cargo check (Compile/Verify)
    • cargo test (Testing)

💻 Architecture & Quirks

  • Blocking HTTP: The API client uses reqwest::blocking::Client. This is intentional; the entire process is synchronous, and a 300-second timeout must be respected.
  • Credentials: Only use ANTARES_USERCODE and ANTARES_PASSWORD from .env. Hardcoding credentials is prohibited.
  • Artifacts (Persistence): Three key artifacts are generated daily/per run:
    1. antares.json: Raw API response data. Saved at the repo root.
    2. out/antares_export.xlsx: Final Excel export. The out/ directory must exist.
    3. log/{YYYY-MM-DD}.log: Daily operational logs. The log/ directory must exist.

📊 Business Logic (Excel Export Rules)

The Excel sheet does not use a simple JSON dump; it implements specific business rules:

  • Required Fields: Rows are skipped if the product code (cikkszam) or product name is missing.
  • Column Mapping Precedence:
    • BESZCIKKNEV: Use cikk_megnevezes_rovid, falling back to cikk_megnevezes.
    • EGYSEGAR: Prefer netto_kisker_ar. If zero, check the product description (cikk_jellemzok) for an entry matching "Alap ár".

🗂️ Module Ownership

  • Schema Changes: Always update struct definitions in src/template/antares.rs before making changes to data handling logic.
  • Tooling: New utility functions (e.g., CSV export) should be added as self-contained modules within src/tools/.