antares_get_data/AGENTS.md

30 lines
2.1 KiB
Markdown

# 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/`.