Initial commit: clean project structure

- Backend: FastAPI + SQLAlchemy + Celery (Python 3.11+)
- Frontend: Vue 3 + TypeScript + Pinia + Tailwind
- Admin Frontend: separate Vue 3 app for management
- Docker Compose: 9 services orchestration
- Specs: design prototypes, memory system PRD, product roadmap

Cleanup performed:
- Removed temporary debug scripts from backend root
- Removed deprecated admin_app.py (embedded UI)
- Removed duplicate docs from admin-frontend
- Updated .gitignore for Vite cache and egg-info
This commit is contained in:
zhangtuo
2026-01-20 18:20:03 +08:00
commit e9d7f8832a
241 changed files with 33070 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
import asyncio
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from app.db.database import async_engine
from sqlalchemy import text
async def upgrade_db():
print("🚀 Checking database schema...")
async with async_engine.begin() as conn:
# Check if column exists
result = await conn.execute(text(
"SELECT column_name FROM information_schema.columns WHERE table_name='providers' AND column_name='config_json';"
))
if result.scalar():
print("✅ Column 'config_json' already exists.")
else:
print("⚠️ Column 'config_json' missing. Adding it now...")
await conn.execute(text("ALTER TABLE providers ADD COLUMN config_json JSON;"))
print("✅ Column 'config_json' added successfully.")
if __name__ == "__main__":
if sys.platform == 'win32':
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
asyncio.run(upgrade_db())