# Testing Guide for Duplicate Detection API ## Quick Test Methods ### 1. Using the Test Script (Recommended) Test the Hugging Face Space deployment: ```bash python3 test.py --base-url https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space ``` Test locally (if running on your machine): ```bash python3 test.py --base-url http://127.0.0.1:8000 ``` ### 2. Using cURL Commands **Health Check:** ```bash curl https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space/health ``` **Get Suggestions:** ```bash curl https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space/suggestions?limit=10 ``` **With pretty JSON output:** ```bash curl -s https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space/suggestions | python3 -m json.tool ``` ### 3. Using Browser Simply open these URLs in your browser: - **Health Check:** ``` https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space/health ``` - **Get Suggestions:** ``` https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space/suggestions?limit=5 ``` ### 4. Using Python Requests Create a simple test script: ```python import requests import json BASE_URL = "https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space" # Test health endpoint response = requests.get(f"{BASE_URL}/health") print("Health Status:", response.status_code) print("Response:", response.json()) # Test suggestions endpoint response = requests.get(f"{BASE_URL}/suggestions", params={"limit": 5}) print("\nSuggestions Status:", response.status_code) print("Suggestions Count:", len(response.json())) print("\nFirst Suggestion:") print(json.dumps(response.json()[0] if response.json() else {}, indent=2)) ``` ### 5. Using Postman or Insomnia **Health Endpoint:** - Method: `GET` - URL: `https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space/health` **Suggestions Endpoint:** - Method: `GET` - URL: `https://LogicGoInfotechSpaces-duplicate-transaction-detection.hf.space/suggestions` - Query Parameters: - `limit`: `10` (optional, default: 50, max: 500) ## Expected Responses ### Health Endpoint Response: ```json { "status": "ok" } ``` ### Suggestions Endpoint Response: ```json [ { "_id": "6923ec37a48c1900950d7e7a", "candidate_ids": ["6923ebe7dfb90e344a8a8289", "6923ebf3dfb90e344a8a82cf"], "message": "These seem similar. Would you like to merge them?", "details": { "amount_delta_pct": 0.16, "time_delta_minutes": 0.0, "merchant_match_rule": "exact" }, "audit": { "generated_by": "duplicate-detector", "generated_at": "2025-11-24T05:25:11.966000", "rule_version": "v1.0" }, "status": "pending" } ] ``` ## Testing the Scheduler The scheduler runs automatically in the background. To verify it's working: 1. **Check the logs** - The scheduler logs when it runs duplicate detection 2. **Monitor suggestions** - New suggestions should appear periodically (default: every 60 seconds) 3. **Check timestamps** - The `audit.generated_at` field shows when each suggestion was created ## Local Testing To test locally, first start the server: ```bash python3 -m uvicorn src.api:app --host 127.0.0.1 --port 8000 --reload ``` Then in another terminal: ```bash python3 test.py --base-url http://127.0.0.1:8000 ``` ## Troubleshooting - **404 Error**: Make sure the Space is running on Hugging Face - **Timeout**: The suggestions endpoint might take time if there's a lot of data - **Empty suggestions**: The scheduler might not have found duplicates yet, or the lookback window needs adjustment