#!/bin/bash # Validation script for enhanced JSON reports (Schema v4.1) echo "================================================================================" echo "VALIDATION: Enhanced JSON Reports with Complete Scoring Breakdown" echo "================================================================================" echo "" # 1. Check JSON file size echo "📊 Step 1: Check JSON file size (should be ~120KB, was ~83KB)" echo "--------------------------------------------------------------------------------" ls -lh reports/latest/json/warren_scan_IT_latest.json JSON_SIZE=$(stat -f%z reports/latest/json/warren_scan_IT_latest.json 2>/dev/null || stat -c%s reports/latest/json/warren_scan_IT_latest.json) echo "Size: $JSON_SIZE bytes (~$((JSON_SIZE/1024)) KB)" echo "" # 2. Verify score.breakdown present echo "✅ Step 2: Verify score.breakdown structure" echo "--------------------------------------------------------------------------------" cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].score.breakdown' 2>/dev/null | head -20 if [ $? -eq 0 ]; then echo "✅ score.breakdown present" else echo "❌ score.breakdown MISSING" fi echo "" # 3. Verify valuation.fair_value_methods echo "✅ Step 3: Verify valuation.fair_value_methods" echo "--------------------------------------------------------------------------------" cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].valuation.fair_value_methods' 2>/dev/null if [ $? -eq 0 ]; then echo "✅ fair_value_methods present" else echo "❌ fair_value_methods MISSING" fi echo "" # 4. Verify algorithm_parameters echo "✅ Step 4: Verify algorithm_parameters" echo "--------------------------------------------------------------------------------" cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].algorithm_parameters' 2>/dev/null if [ $? -eq 0 ]; then echo "✅ algorithm_parameters present" else echo "❌ algorithm_parameters MISSING" fi echo "" # 5. Check HTML report unchanged echo "📄 Step 5: Check HTML report size (should be unchanged)" echo "--------------------------------------------------------------------------------" ls -lh reports/latest/html/warren_scan_IT_latest.html echo "" # 6. Count fields in JSON echo "📈 Step 6: Field count analysis" echo "--------------------------------------------------------------------------------" BREAKDOWN_FIELDS=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].score.breakdown | keys | length' 2>/dev/null) FV_METHODS_FIELDS=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].valuation.fair_value_methods | keys | length' 2>/dev/null) ALGO_PARAMS_FIELDS=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].algorithm_parameters | keys | length' 2>/dev/null) echo "Breakdown categories: $BREAKDOWN_FIELDS (expected: 6)" echo "Fair value methods: $FV_METHODS_FIELDS (expected: 6)" echo "Algorithm param sections: $ALGO_PARAMS_FIELDS (expected: 3)" echo "" # 7. Sample data verification echo "🔍 Step 7: Sample data verification (first stock)" echo "--------------------------------------------------------------------------------" TICKER=$(cat reports/latest/json/warren_scan_IT_latest.json | jq -r '.stocks[0].ticker' 2>/dev/null) TOTAL_SCORE=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].score.total' 2>/dev/null) RAW_SCORE=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].score.raw_score' 2>/dev/null) VALUATION_TOTAL=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].score.breakdown.valuation.total' 2>/dev/null) QUALITY_TOTAL=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].score.breakdown.quality.total' 2>/dev/null) PE_BASED=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].valuation.fair_value_methods.pe_based' 2>/dev/null) IS_LUXURY=$(cat reports/latest/json/warren_scan_IT_latest.json | jq '.stocks[0].algorithm_parameters.sector_flags.is_luxury' 2>/dev/null) echo "Stock: $TICKER" echo "Total Score: $TOTAL_SCORE" echo "Raw Score: $RAW_SCORE" echo "Valuation Score: $VALUATION_TOTAL" echo "Quality Score: $QUALITY_TOTAL" echo "P/E Fair Value: €$PE_BASED" echo "Is Luxury: $IS_LUXURY" echo "" echo "================================================================================" echo "✅ VALIDATION COMPLETE" echo "================================================================================"