30 lines
2.1 KiB
Markdown
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`.
|
|
* **Export Filter:** Rows are skipped if the unit price (`EGYSEGAR`) is zero after applying business logic.
|
|
|
|
## 🗂️ 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/`. |