feat: 初始化考培练系统项目

- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
111
2026-01-24 19:33:28 +08:00
commit 998211c483
1197 changed files with 228429 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
"""
简单的初始化脚本
"""
import sqlite3
import os
# 创建数据库文件
db_path = 'kaopeilian.db'
# 如果数据库已存在,删除它
if os.path.exists(db_path):
os.remove(db_path)
# 连接数据库
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 创建teams表
cursor.execute('''
CREATE TABLE IF NOT EXISTS teams (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(100) NOT NULL UNIQUE,
code VARCHAR(50) NOT NULL UNIQUE,
description TEXT,
team_type VARCHAR(50) DEFAULT 'department',
is_active BOOLEAN DEFAULT 1,
leader_id INTEGER,
parent_id INTEGER,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
is_deleted BOOLEAN DEFAULT 0,
deleted_at DATETIME,
created_by INTEGER,
updated_by INTEGER,
FOREIGN KEY (parent_id) REFERENCES teams(id),
FOREIGN KEY (leader_id) REFERENCES users(id)
)
''')
# 创建users表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
phone VARCHAR(20) UNIQUE,
hashed_password VARCHAR(200) NOT NULL,
full_name VARCHAR(100),
avatar_url VARCHAR(500),
bio TEXT,
role VARCHAR(20) DEFAULT 'trainee',
is_active BOOLEAN DEFAULT 1,
is_verified BOOLEAN DEFAULT 0,
last_login_at DATETIME,
password_changed_at DATETIME,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
is_deleted BOOLEAN DEFAULT 0,
deleted_at DATETIME,
created_by INTEGER,
updated_by INTEGER
)
''')
# 创建user_teams关联表
cursor.execute('''
CREATE TABLE IF NOT EXISTS user_teams (
user_id INTEGER NOT NULL,
team_id INTEGER NOT NULL,
role VARCHAR(50) DEFAULT 'member',
joined_at DATETIME DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, team_id),
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (team_id) REFERENCES teams(id)
)
''')
# 提交更改
conn.commit()
conn.close()
print("✓ SQLite数据库初始化成功")
print(f"✓ 数据库文件: {os.path.abspath(db_path)}")