Backend (Phase 1-6): - Pydantic schemas for request/response validation - Service layer (SSH Key, Server, Repo, Sync) - API routes with authentication - FastAPI main application with lifespan management - ORM models (SshKey, Server, Repo, SyncLog) Frontend (Phase 7): - Vue 3 + Element Plus + Pinia + Vue Router - API client with Axios and interceptors - State management stores - All page components (Dashboard, Servers, Repos, SyncLogs, SshKeys, Settings) Deployment (Phase 8): - README with quick start guide - Startup script (start.sh) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
112 lines
2.8 KiB
Python
112 lines
2.8 KiB
Python
"""
|
|
Simple verification script for Phase 5 and Phase 6 implementation.
|
|
|
|
This script verifies that all required files exist and can be imported.
|
|
"""
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add backend to path
|
|
sys.path.insert(0, str(Path(__file__).parent))
|
|
|
|
|
|
def verify_file_exists(filepath: str) -> bool:
|
|
"""Check if a file exists."""
|
|
path = Path(__file__).parent / filepath
|
|
if path.exists():
|
|
print(f"✓ {filepath}")
|
|
return True
|
|
else:
|
|
print(f"✗ {filepath} (MISSING)")
|
|
return False
|
|
|
|
|
|
def verify_import(module_path: str) -> bool:
|
|
"""Try to import a module."""
|
|
try:
|
|
__import__(module_path)
|
|
print(f"✓ {module_path} (importable)")
|
|
return True
|
|
except Exception as e:
|
|
print(f"✗ {module_path} (import failed: {e})")
|
|
return False
|
|
|
|
|
|
def main():
|
|
"""Run verification checks."""
|
|
print("=" * 60)
|
|
print("Phase 5: API Routes - File Verification")
|
|
print("=" * 60)
|
|
|
|
phase5_files = [
|
|
"app/api/__init__.py",
|
|
"app/api/deps.py",
|
|
"app/api/ssh_keys.py",
|
|
"app/api/servers.py",
|
|
"app/api/status.py",
|
|
]
|
|
|
|
phase5_ok = all(verify_file_exists(f) for f in phase5_files)
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Phase 6: FastAPI Main Application - File Verification")
|
|
print("=" * 60)
|
|
|
|
phase6_files = [
|
|
"app/main.py",
|
|
]
|
|
|
|
phase6_ok = all(verify_file_exists(f) for f in phase6_files)
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Test Files - File Verification")
|
|
print("=" * 60)
|
|
|
|
test_files = [
|
|
"tests/test_api/__init__.py",
|
|
"tests/test_api/test_ssh_keys_api.py",
|
|
"tests/test_api/test_servers_api.py",
|
|
"tests/test_api/test_status_api.py",
|
|
]
|
|
|
|
tests_ok = all(verify_file_exists(f) for f in test_files)
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Import Verification")
|
|
print("=" * 60)
|
|
|
|
imports_ok = True
|
|
imports = [
|
|
"app.api.deps",
|
|
"app.api.ssh_keys",
|
|
"app.api.servers",
|
|
"app.api.status",
|
|
]
|
|
|
|
for module in imports:
|
|
if not verify_import(module):
|
|
imports_ok = False
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Summary")
|
|
print("=" * 60)
|
|
|
|
if phase5_ok and phase6_ok and tests_ok:
|
|
print("✓ All required files have been created")
|
|
else:
|
|
print("✗ Some files are missing")
|
|
|
|
if imports_ok:
|
|
print("✓ All modules can be imported")
|
|
else:
|
|
print("✗ Some modules failed to import")
|
|
|
|
print("\nImplementation Status:")
|
|
print(f" Phase 5 (API Routes): {'✓ COMPLETE' if phase5_ok else '✗ INCOMPLETE'}")
|
|
print(f" Phase 6 (Main App): {'✓ COMPLETE' if phase6_ok else '✗ INCOMPLETE'}")
|
|
print(f" Test Files: {'✓ COMPLETE' if tests_ok else '✗ INCOMPLETE'}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|