fraudshield / check_deployment.py
DevikaJ2005's picture
Trigger HF Space rebuild
957799d
#!/usr/bin/env python3
"""
HuggingFace Spaces Deployment Checklist for FraudShield
This script verifies all required files are present and ready for deployment.
Run this before deploying to confirm everything is set up correctly.
"""
import os
import json
from pathlib import Path
def check_deployment_readiness():
"""Verify all files required for HF Space deployment."""
print("=" * 80)
print("FraudShield HF Spaces Deployment Readiness Check")
print("=" * 80)
print()
checks = {
"Docker Files": [
("Dockerfile", "Core container definition"),
(".dockerignore", "Build context optimization"),
],
"Python Files": [
("server/app.py", "FastAPI application"),
("fraudshield_env.py", "Environment core"),
("models.py", "Pydantic models"),
("inference.py", "Baseline inference"),
("data_loader.py", "Data pipeline"),
("graders.py", "Scoring functions"),
("llm_agent.py", "Agent implementations"),
],
"Configuration Files": [
("pyproject.toml", "Project metadata"),
("openenv.yaml", "OpenEnv specification"),
],
"Data Files": [
("data/fraudshield_cases.json", "Frozen snapshot (108 cases)"),
("data/creditcard.csv", "Source data (optional)"),
],
"Documentation": [
("README.md", "User documentation"),
("server/__init__.py", "Package marker"),
],
"Testing & Validation": [
("validate_enhancements.py", "Enhancement tests"),
("validate_api.py", "API endpoint tests"),
],
}
all_pass = True
total_files = 0
found_files = 0
for category, files in checks.items():
print(f"πŸ“ {category}")
print("-" * 80)
for filepath, description in files:
total_files += 1
exists = Path(filepath).exists()
status = "βœ“" if exists else "βœ—"
if exists:
found_files += 1
try:
size = Path(filepath).stat().st_size
size_str = f"({size:,} bytes)"
except:
size_str = ""
print(f" {status} {filepath:40} {description:35} {size_str}")
else:
print(f" {status} {filepath:40} {description:35} MISSING!")
all_pass = False
print()
# Check git status
print("πŸ“Š Git Configuration")
print("-" * 80)
try:
import subprocess
result = subprocess.run(
["git", "remote", "-v"],
capture_output=True,
text=True,
cwd="."
)
if "github.com/DevikaJ2005/Fraudshield" in result.stdout:
print(" βœ“ GitHub remote configured")
print(" " + result.stdout.split('\n')[0])
else:
print(" ⚠ GitHub remote not found")
except:
pass
# Check latest commit
try:
result = subprocess.run(
["git", "log", "--oneline", "-1"],
capture_output=True,
text=True,
cwd="."
)
print(f" βœ“ Latest commit: {result.stdout.strip()}")
except:
pass
print()
print("=" * 80)
print("DEPLOYMENT READINESS SUMMARY")
print("=" * 80)
print(f"Files Ready: {found_files}/{total_files}")
if all_pass:
print("βœ“ ALL FILES PRESENT - READY FOR DEPLOYMENT")
else:
print("βœ— SOME FILES MISSING - DEPLOYMENT MAY FAIL")
print()
print("=" * 80)
print("NEXT STEPS FOR HF SPACE DEPLOYMENT")
print("=" * 80)
print()
print("1. Go to https://huggingface.co/new-space")
print()
print("2. Fill in the form:")
print(" - Owner: DevikaJ2005 (or your HF username)")
print(" - Space name: fraudshield")
print(" - Space SDK: Docker")
print(" - Visibility: Public")
print()
print("3. Choose connection method:")
print()
print(" Option A: GitHub Sync (RECOMMENDED)")
print(" β€’ After creating space, go to Settings")
print(" β€’ Find 'Repository settings'")
print(" β€’ Enable GitHub Sync")
print(" β€’ Select: DevikaJ2005/Fraudshield")
print(" β€’ Branch: main")
print(" β€’ Save - Deploy will start automatically!")
print()
print(" Option B: Manual Git Push")
print(" β€’ After creating space, HF shows git URL")
print(" β€’ Run: git remote add space <HF_GIT_URL>")
print(" β€’ Run: git push space main")
print()
print("4. Wait for deployment (~2-5 minutes)")
print()
print("5. After deployment, verify:")
print(" β€’ GET https://YOUR_SPACE_URL/health β†’ status: healthy")
print(" β€’ GET https://YOUR_SPACE_URL/info β†’ snapshot metadata")
print(" β€’ GET https://YOUR_SPACE_URL/tasks β†’ 3 tasks listed")
print()
print("=" * 80)
print()
if __name__ == "__main__":
check_deployment_readiness()