Files
mini/docs/WEEKS2-3_TESTING.md
2025-12-15 18:22:03 -05:00

3.7 KiB

Weeks 2 & 3: Data & Geospatial - Testing Guide

Components Built

Week 2: Data Ingestion & Orchestration

  1. Data Validation (src/lib/data/dataValidator.ts)

    • Zod schemas for all data types
    • City targets, competitors, generic data
    • Generation jobs, geospatial campaigns
  2. CSV/JSON Ingestion (src/pages/api/god/data/ingest.ts)

    • Papaparse integration
    • Bulk INSERT in transactions
    • Column mapping
    • Validate-only mode
  3. Pool Statistics (src/pages/api/god/pool/stats.ts)

    • Connection monitoring
    • Saturation percentage
    • Health recommendations

Week 3: Geospatial & Intelligence

  1. Geospatial Launcher (src/pages/api/god/geo/launch-campaign.ts)

    • Turf.js point generation
    • Density-based sampling
    • BullMQ addBulk integration
  2. Shim Preview (src/pages/api/god/shim/preview.ts)

    • SQL dry-run translation
    • Directus query preview
  3. Prompt Sandbox (src/pages/api/intelligence/prompts/test.ts)

    • Cost estimation
    • Batch projections
    • Mock LLM responses
  4. Spintax Validator (src/pages/api/intelligence/spintax/validate.ts)

    • Syntax checking
    • Sample generation
    • Error detection

Testing Checklist

Test 1: CSV Ingestion (1000 rows)

curl -X POST http://localhost:4321/api/god/data/ingest \
  -H "X-God-Token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "format": "csv",
    "tableName": "geo_locations",
    "data": "city_name,state,lat,lng\nAustin,TX,30.2672,-97.7431\nDallas,TX,32.7767,-96.7970",
    "validateOnly": false
  }'

Expected: Inserts 2 cities into geo_locations


Test 2: Pool Statistics

curl http://localhost:4321/api/god/pool/stats \
  -H "X-God-Token: YOUR_TOKEN"

Expected: Returns total/idle/waiting connections + saturation %


Test 3: Geospatial Campaign Launch

curl -X POST http://localhost:4321/api/god/geo/launch-campaign \
  -H "X-God-Token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "boundary": {
      "type": "Polygon",
      "coordinates": [[
        [-97.74, 30.27],
        [-97.74, 30.40],
        [-97.54, 30.40],
        [-97.54, 30.27],
        [-97.74, 30.27]
      ]]
    },
    "campaign_type": "local_article",
    "density": "medium",
    "site_id": "YOUR_SITE_UUID"
  }'

Expected: Generates ~50 points, inserts to database, queues jobs


Test 4: Prompt Cost Estimation

curl -X POST http://localhost:4321/api/intelligence/prompts/test \
  -H "X-God-Token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Write about {topic} in {city}",
    "variables": {"topic": "restaurants", "city": "Austin"},
    "model": "gpt-4",
    "max_tokens": 1000
  }'

Expected: Returns mock response + cost for 100/1k/10k/100k batches


Test 5: Spintax Validation

curl -X POST http://localhost:4321/api/intelligence/spintax/validate \
  -H "X-God-Token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "pattern": "{Hello|Hi|Hey} {world|friend}!"
  }'

Expected: valid=true, 5 sample variations


Test 6: Invalid Spintax

curl -X POST http://localhost:4321/api/intelligence/spintax/validate \
  -H "X-God-Token: YOUR_TOKEN"
 \
  -H "Content-Type: application/json" \
  -d '{
    "pattern": "{Hello|Hi} {world"
  }'

Expected: valid=false, errors array with unclosed_brace


Success Criteria

  • CSV with 1000+ rows ingests in <3 seconds
  • Pool stats shows accurate saturation
  • Geo campaign generates points inside boundary
  • Cost estimates prevent expensive mistakes
  • Spintax validator catches syntax errors

Weeks 2 & 3 Complete! 🎉