Base code

This commit is contained in:
Kunthawat Greethong
2026-01-08 22:39:53 +07:00
parent 697115c61a
commit c35fa52117
2169 changed files with 626670 additions and 0 deletions

View File

@@ -0,0 +1,205 @@
"""
Simple verification script for subscription system setup.
Checks that all files are created and properly structured.
"""
import os
import sys
from pathlib import Path
def check_file_exists(file_path, description):
"""Check if a file exists and report status."""
if os.path.exists(file_path):
print(f"{description}: {file_path}")
return True
else:
print(f"{description}: {file_path} - NOT FOUND")
return False
def check_file_content(file_path, search_terms, description):
"""Check if file contains expected content."""
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
missing_terms = []
for term in search_terms:
if term not in content:
missing_terms.append(term)
if not missing_terms:
print(f"{description}: All expected content found")
return True
else:
print(f"{description}: Missing content - {missing_terms}")
return False
except Exception as e:
print(f"{description}: Error reading file - {e}")
return False
def main():
"""Main verification function."""
print("🔍 ALwrity Subscription System Setup Verification")
print("=" * 60)
backend_dir = Path(__file__).parent
# Files to check
files_to_check = [
(backend_dir / "models" / "subscription_models.py", "Subscription Models"),
(backend_dir / "services" / "pricing_service.py", "Pricing Service"),
(backend_dir / "services" / "usage_tracking_service.py", "Usage Tracking Service"),
(backend_dir / "services" / "subscription_exception_handler.py", "Exception Handler"),
(backend_dir / "api" / "subscription_api.py", "Subscription API"),
(backend_dir / "scripts" / "create_subscription_tables.py", "Migration Script"),
(backend_dir / "test_subscription_system.py", "Test Script"),
(backend_dir / "SUBSCRIPTION_SYSTEM_README.md", "Documentation")
]
# Check file existence
print("\n📁 Checking File Existence:")
print("-" * 30)
files_exist = 0
for file_path, description in files_to_check:
if check_file_exists(file_path, description):
files_exist += 1
# Check content of key files
print("\n📝 Checking File Content:")
print("-" * 30)
content_checks = [
(
backend_dir / "models" / "subscription_models.py",
["SubscriptionPlan", "APIUsageLog", "UsageSummary", "APIProvider"],
"Subscription Models Content"
),
(
backend_dir / "services" / "pricing_service.py",
["calculate_api_cost", "check_usage_limits", "APIProvider.GEMINI"],
"Pricing Service Content"
),
(
backend_dir / "services" / "usage_tracking_service.py",
["track_api_usage", "get_user_usage_stats", "enforce_usage_limits"],
"Usage Tracking Content"
),
(
backend_dir / "api" / "subscription_api.py",
["get_user_usage", "get_subscription_plans", "get_dashboard_data"],
"API Endpoints Content"
)
]
content_valid = 0
for file_path, search_terms, description in content_checks:
if os.path.exists(file_path):
if check_file_content(file_path, search_terms, description):
content_valid += 1
else:
print(f"{description}: File not found")
# Check middleware integration
print("\n🔧 Checking Middleware Integration:")
print("-" * 30)
middleware_file = backend_dir / "middleware" / "monitoring_middleware.py"
middleware_terms = [
"UsageTrackingService",
"detect_api_provider",
"track_api_usage",
"check_usage_limits_middleware"
]
middleware_ok = check_file_content(
middleware_file,
middleware_terms,
"Middleware Integration"
)
# Check app.py integration
print("\n🚀 Checking FastAPI Integration:")
print("-" * 30)
app_file = backend_dir / "app.py"
app_terms = [
"from api.subscription_api import router as subscription_router",
"app.include_router(subscription_router)"
]
app_ok = check_file_content(
app_file,
app_terms,
"FastAPI App Integration"
)
# Check database service integration
print("\n💾 Checking Database Integration:")
print("-" * 30)
db_file = backend_dir / "services" / "database.py"
db_terms = [
"from models.subscription_models import Base as SubscriptionBase",
"SubscriptionBase.metadata.create_all(bind=engine)"
]
db_ok = check_file_content(
db_file,
db_terms,
"Database Service Integration"
)
# Summary
print("\n" + "=" * 60)
print("📊 VERIFICATION SUMMARY")
print("=" * 60)
total_files = len(files_to_check)
total_content = len(content_checks)
print(f"Files Created: {files_exist}/{total_files}")
print(f"Content Valid: {content_valid}/{total_content}")
print(f"Middleware Integration: {'' if middleware_ok else ''}")
print(f"FastAPI Integration: {'' if app_ok else ''}")
print(f"Database Integration: {'' if db_ok else ''}")
# Overall status
all_checks = [
files_exist == total_files,
content_valid == total_content,
middleware_ok,
app_ok,
db_ok
]
if all(all_checks):
print("\n🎉 ALL CHECKS PASSED!")
print("✅ Subscription system setup is complete and ready to use.")
print("\n" + "=" * 60)
print("🚀 NEXT STEPS:")
print("=" * 60)
print("1. Install dependencies (if not already done):")
print(" pip install sqlalchemy loguru fastapi")
print("\n2. Run the migration script:")
print(" python scripts/create_subscription_tables.py")
print("\n3. Test the system:")
print(" python test_subscription_system.py")
print("\n4. Start the server:")
print(" python start_alwrity_backend.py")
print("\n5. Test API endpoints:")
print(" GET http://localhost:8000/api/subscription/plans")
print(" GET http://localhost:8000/api/subscription/pricing")
else:
print("\n❌ SOME CHECKS FAILED!")
print("Please review the errors above and fix any issues.")
return False
return True
if __name__ == "__main__":
success = main()
if not success:
sys.exit(1)