rm AGENTS.md

This commit is contained in:
Villers Krisztián 2026-05-05 17:01:46 +02:00
parent 37537f9c44
commit e65d67a5f3
3 changed files with 22 additions and 48 deletions

View File

@ -19,13 +19,13 @@ This is a modular single-binary Rust utility that fetches Antares B2B product da
- `src/api/client.rs` - handles URL construction for the Antares B2B API
- `src/tools/excel.rs` - implements Excel export with selective field mapping and business rule validation
- `src/tools/logger.rs` - provides dual output (terminal + file) logging to `log/{YYYY-MM-DD}.log`
- `src/template/antares.rs` - serde models with `#[serde(rename_all = "PascalCase")]`; top-level is `Antares` alias for `Vec<AntaresItem>`
- `src/template/antares.rs` - serde models with `#[serde(rename_all = "PascalCase")]`; top-level is `Antares` alias for `Vec<AntaresItem>`; also contains `AntaresLogin` struct holding credentials and base URL
**Pipeline:**
1. Initialize logger (creates `log/` dir if needed)
2. Load credentials from `.env` via `dotenv`
3. Build Antares API URL using `src/api/client::make_url()`
4. Fetch with 300-second timeout via blocking `reqwest::blocking::Client`
3. Build Antares API URL using `src/api/client::make_url()` (takes an `AntaresLogin` struct)
4. Fetch with 600-second timeout via blocking `reqwest::blocking::Client` (in `src/tools/request.rs`)
5. Deserialize into typed `Antares` structs; if schema mismatch, preserve response as JSON/text
6. Write `antares.json` with pretty formatting
7. Export filtered rows to `out/antares_export.xlsx` via `src/tools/excel::export_to_excel()`
@ -39,13 +39,15 @@ This is a modular single-binary Rust utility that fetches Antares B2B product da
## Key conventions
**Credentials:**
- Load only via `ANTARES_USERCODE` and `ANTARES_PASSWORD` env vars from `.env`
- Load via `URL`, `ANTARES_USERCODE`, `ANTARES_PASSWORD`, and `OUT` env vars from `.env`
- `URL` is the Antares B2B base URL; `OUT` is the output file path for the Excel export
- `.env.example` documents required variables
- No hardcoded credentials; missing vars cause graceful failure with instructions
- `PASSWORD` is wrapped in `Zeroizing<String>` (from the `zeroize` crate) to securely wipe it from memory after use
**Artifacts:**
- `antares.json` - saved at repo root after each successful API fetch
- `out/antares_export.xlsx` - Excel export; `out/` directory created auto if missing
- `temp/antares.json` - saved in `temp/` after each successful API fetch; directory created auto if missing
- Excel export path is configured via the `OUT` env var; parent directory created auto if missing
- `log/{YYYY-MM-DD}.log` - daily logs; `log/` directory created auto if missing
- `.gitignore` excludes: `*.json`, `*.xlsx`, `.env`, `/out`, `/log`
@ -64,9 +66,9 @@ This is a modular single-binary Rust utility that fetches Antares B2B product da
**Modularity:**
- Extend by adding new files to `src/tools/` (e.g., `csv.rs`, `database.rs`)
- Each tool should be self-contained and exposed via `src/tools/mod.rs`
- HTTP client logic stays in `src/api/`; reuse `make_request()` from `main.rs` for consistency
- HTTP client logic stays in `src/tools/request.rs`; reuse `make_request()` from there for consistency
**Blocking HTTP:**
- Uses `reqwest::blocking::Client` with 300-second timeout
- Uses `reqwest::blocking::Client` with 600-second timeout (in `src/tools/request.rs`)
- No async runtime; synchronous flow is intentional
- Only change to async if architecture overhaul is deliberate

View File

@ -1,30 +0,0 @@
# 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) - run after any file modifications
* `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/`.

View File

@ -11,6 +11,8 @@ Rust utility to fetch product data from Antares B2B and export to Excel which ca
## Quick Start
Linux / MacOS:
```bash
cp .env.example .env
# Edit .env with your credentials and output path
@ -18,6 +20,14 @@ cargo build --release
./target/release/antares_get_data
```
Windows:
```cmd
copy .env.example .env
# Edit .env with your credentials and output path
cargo build --release
./target/release/antares_get_data
```
## Configuration
`.env` file:
@ -36,7 +46,7 @@ OUT=out\\test.xlsx
## How It Works
1. Load credentials from `.env`
2. Fetch product data from Antares B2B API (300s timeout)
2. Fetch product data from Antares B2B API (600s timeout)
3. Save raw JSON to `antares.json`
4. Export filtered data to Excel
5. Log all operations to `log/YYYY-MM-DD.log`
@ -56,16 +66,8 @@ OUT=out\\test.xlsx
| ME | [mennyisegi_egyseg_kod](./src/template/antares.rs#L17) |
| EGYSEGAR | [netto_kisker_ar](./src/template/antares.rs#L19) or "Alap ár" [jellemzo](./src/template/antares.rs#L34) |
Rows skipped if `cikkszam` or product name missing.
Rows skipped if `BESZCIKKSZAM` or `BESZCIKKNEV` missing.
## Development
```bash
cargo build
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
cargo test
```
## License