feat: 自动提交 - 周一 2025/09/22 14:40:25.43
This commit is contained in:
174
init_database.py
174
init_database.py
@@ -63,15 +63,15 @@ class DatabaseInitializer:
|
||||
print(f"🔗 连接地址: {self.db_url}")
|
||||
print(f"⏰ 初始化时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
print("=" * 80)
|
||||
|
||||
try:
|
||||
# 设置日志
|
||||
setup_logging(Config.LOG_LEVEL, Config.LOG_FILE)
|
||||
|
||||
# 测试数据库连接
|
||||
try:
|
||||
# 设置日志
|
||||
setup_logging(Config.LOG_LEVEL, Config.LOG_FILE)
|
||||
|
||||
# 测试数据库连接
|
||||
if not self._test_connection():
|
||||
return False
|
||||
|
||||
return False
|
||||
|
||||
# 检查是否需要重置数据库
|
||||
if force_reset:
|
||||
if not self._reset_database():
|
||||
@@ -84,8 +84,8 @@ class DatabaseInitializer:
|
||||
# 执行数据库迁移
|
||||
if not self._run_migrations():
|
||||
return False
|
||||
|
||||
# 插入初始数据
|
||||
|
||||
# 插入初始数据
|
||||
if not self._insert_initial_data():
|
||||
return False
|
||||
|
||||
@@ -99,9 +99,9 @@ class DatabaseInitializer:
|
||||
print("\n" + "=" * 80)
|
||||
print("🎉 数据库初始化完成!")
|
||||
print("=" * 80)
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ 数据库初始化失败: {e}")
|
||||
self.logger.error(f"数据库初始化失败: {e}", exc_info=True)
|
||||
return False
|
||||
@@ -154,7 +154,7 @@ class DatabaseInitializer:
|
||||
|
||||
if created_tables:
|
||||
print(f"✅ 新创建表: {', '.join(created_tables)}")
|
||||
else:
|
||||
else:
|
||||
print("✅ 所有表已存在")
|
||||
|
||||
return True
|
||||
@@ -220,17 +220,17 @@ class DatabaseInitializer:
|
||||
# 检查表是否存在
|
||||
inspector = inspect(db_manager.engine)
|
||||
if 'vehicle_data' not in inspector.get_table_names():
|
||||
print(" ➕ 创建vehicle_data表...")
|
||||
VehicleData.__table__.create(session.bind, checkfirst=True)
|
||||
print(" ✅ vehicle_data表创建成功")
|
||||
else:
|
||||
print(" ✅ vehicle_data表已存在")
|
||||
|
||||
session.commit()
|
||||
print(" ➕ 创建vehicle_data表...")
|
||||
VehicleData.__table__.create(session.bind, checkfirst=True)
|
||||
print(" ✅ vehicle_data表创建成功")
|
||||
else:
|
||||
print(" ✅ vehicle_data表已存在")
|
||||
|
||||
session.commit()
|
||||
return True
|
||||
except Exception as e:
|
||||
except Exception as e:
|
||||
print(f" ❌ 车辆数据表迁移失败: {e}")
|
||||
return False
|
||||
return False
|
||||
|
||||
def _migrate_conversation_enhancements(self) -> bool:
|
||||
"""迁移对话增强字段"""
|
||||
@@ -357,9 +357,9 @@ class DatabaseInitializer:
|
||||
else:
|
||||
print(f" 📊 所有字段都已存在,跳过 {skipped_count} 个字段")
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f" ❌ 添加字段过程失败: {e}")
|
||||
return False
|
||||
|
||||
@@ -391,15 +391,15 @@ class DatabaseInitializer:
|
||||
|
||||
return result[0] > 0
|
||||
except Exception:
|
||||
return False
|
||||
return False
|
||||
|
||||
def _insert_initial_data(self) -> bool:
|
||||
"""插入初始数据"""
|
||||
"""插入初始数据"""
|
||||
print("\n📊 插入初始数据...")
|
||||
|
||||
try:
|
||||
with db_manager.get_session() as session:
|
||||
# 检查是否已有数据
|
||||
try:
|
||||
with db_manager.get_session() as session:
|
||||
# 检查是否已有数据
|
||||
existing_count = session.query(KnowledgeEntry).count()
|
||||
if existing_count > 0:
|
||||
print(f" ✅ 数据库中已有 {existing_count} 条知识库条目,跳过初始数据插入")
|
||||
@@ -541,53 +541,53 @@ class DatabaseInitializer:
|
||||
]
|
||||
|
||||
def _add_sample_vehicle_data(self) -> bool:
|
||||
"""添加示例车辆数据"""
|
||||
try:
|
||||
from src.vehicle.vehicle_data_manager import VehicleDataManager
|
||||
|
||||
vehicle_manager = VehicleDataManager()
|
||||
success = vehicle_manager.add_sample_vehicle_data()
|
||||
|
||||
if success:
|
||||
print(" ✅ 示例车辆数据添加成功")
|
||||
else:
|
||||
print(" ❌ 示例车辆数据添加失败")
|
||||
"""添加示例车辆数据"""
|
||||
try:
|
||||
from src.vehicle.vehicle_data_manager import VehicleDataManager
|
||||
|
||||
vehicle_manager = VehicleDataManager()
|
||||
success = vehicle_manager.add_sample_vehicle_data()
|
||||
|
||||
if success:
|
||||
print(" ✅ 示例车辆数据添加成功")
|
||||
else:
|
||||
print(" ❌ 示例车辆数据添加失败")
|
||||
|
||||
return success
|
||||
except Exception as e:
|
||||
print(f" ❌ 添加示例车辆数据失败: {e}")
|
||||
except Exception as e:
|
||||
print(f" ❌ 添加示例车辆数据失败: {e}")
|
||||
return False
|
||||
|
||||
def _verify_existing_knowledge(self) -> bool:
|
||||
"""验证现有的知识库条目"""
|
||||
try:
|
||||
with db_manager.get_session() as session:
|
||||
# 获取所有未验证的知识库条目
|
||||
unverified_entries = session.query(KnowledgeEntry).filter(
|
||||
KnowledgeEntry.is_verified == False
|
||||
).all()
|
||||
|
||||
if unverified_entries:
|
||||
print(f" 📝 发现 {len(unverified_entries)} 条未验证的知识库条目")
|
||||
"""验证现有的知识库条目"""
|
||||
try:
|
||||
with db_manager.get_session() as session:
|
||||
# 获取所有未验证的知识库条目
|
||||
unverified_entries = session.query(KnowledgeEntry).filter(
|
||||
KnowledgeEntry.is_verified == False
|
||||
).all()
|
||||
|
||||
# 将现有的知识库条目标记为已验证
|
||||
for entry in unverified_entries:
|
||||
entry.is_verified = True
|
||||
entry.verified_by = "system_init"
|
||||
entry.verified_at = datetime.now()
|
||||
if unverified_entries:
|
||||
print(f" 📝 发现 {len(unverified_entries)} 条未验证的知识库条目")
|
||||
|
||||
# 将现有的知识库条目标记为已验证
|
||||
for entry in unverified_entries:
|
||||
entry.is_verified = True
|
||||
entry.verified_by = "system_init"
|
||||
entry.verified_at = datetime.now()
|
||||
if not hasattr(entry, 'search_frequency'):
|
||||
entry.search_frequency = 0
|
||||
if not hasattr(entry, 'relevance_score'):
|
||||
entry.relevance_score = 0.7
|
||||
|
||||
session.commit()
|
||||
print(f" ✅ 成功验证 {len(unverified_entries)} 条知识库条目")
|
||||
else:
|
||||
print(" ✅ 所有知识库条目已验证")
|
||||
|
||||
|
||||
session.commit()
|
||||
print(f" ✅ 成功验证 {len(unverified_entries)} 条知识库条目")
|
||||
else:
|
||||
print(" ✅ 所有知识库条目已验证")
|
||||
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f" ❌ 验证知识库条目失败: {e}")
|
||||
except Exception as e:
|
||||
print(f" ❌ 验证知识库条目失败: {e}")
|
||||
return False
|
||||
|
||||
def _verify_database_integrity(self) -> bool:
|
||||
@@ -676,14 +676,14 @@ class DatabaseInitializer:
|
||||
return 0
|
||||
|
||||
def check_database_status(self) -> Dict[str, Any]:
|
||||
"""检查数据库状态"""
|
||||
"""检查数据库状态"""
|
||||
print("\n" + "=" * 80)
|
||||
print("📊 数据库状态检查")
|
||||
print("📊 数据库状态检查")
|
||||
print("=" * 80)
|
||||
|
||||
try:
|
||||
with db_manager.get_session() as session:
|
||||
# 检查各表的记录数
|
||||
|
||||
try:
|
||||
with db_manager.get_session() as session:
|
||||
# 检查各表的记录数
|
||||
tables_info = {
|
||||
'work_orders': WorkOrder,
|
||||
'conversations': Conversation,
|
||||
@@ -710,21 +710,21 @@ class DatabaseInitializer:
|
||||
except Exception as e:
|
||||
status["tables"][table_name] = f"错误: {e}"
|
||||
print(f"⚠️ {table_name}: 检查失败 - {e}")
|
||||
|
||||
# 检查车辆数据详情
|
||||
|
||||
# 检查车辆数据详情
|
||||
if 'vehicle_data' in status["tables"] and isinstance(status["tables"]['vehicle_data'], int):
|
||||
vehicle_count = status["tables"]['vehicle_data']
|
||||
if vehicle_count > 0:
|
||||
vehicle_ids = session.query(VehicleData.vehicle_id).distinct().all()
|
||||
print(f" - 车辆数量: {len(vehicle_ids)}")
|
||||
vehicle_ids = session.query(VehicleData.vehicle_id).distinct().all()
|
||||
print(f" - 车辆数量: {len(vehicle_ids)}")
|
||||
status["vehicle_count"] = len(vehicle_ids)
|
||||
|
||||
for vehicle_id in vehicle_ids[:3]: # 显示前3个车辆
|
||||
vehicle_data_types = session.query(VehicleData.data_type).filter(
|
||||
VehicleData.vehicle_id == vehicle_id[0]
|
||||
).distinct().all()
|
||||
print(f" - 车辆 {vehicle_id[0]}: {len(vehicle_data_types)} 种数据类型")
|
||||
|
||||
for vehicle_id in vehicle_ids[:3]: # 显示前3个车辆
|
||||
vehicle_data_types = session.query(VehicleData.data_type).filter(
|
||||
VehicleData.vehicle_id == vehicle_id[0]
|
||||
).distinct().all()
|
||||
print(f" - 车辆 {vehicle_id[0]}: {len(vehicle_data_types)} 种数据类型")
|
||||
|
||||
# 检查知识库验证状态
|
||||
if 'knowledge_entries' in status["tables"] and isinstance(status["tables"]['knowledge_entries'], int):
|
||||
verified_count = session.query(KnowledgeEntry).filter(KnowledgeEntry.is_verified == True).count()
|
||||
@@ -737,12 +737,12 @@ class DatabaseInitializer:
|
||||
}
|
||||
|
||||
print(f"\n📊 总记录数: {status['total_records']}")
|
||||
print("\n✅ 数据库状态检查完成")
|
||||
|
||||
print("\n✅ 数据库状态检查完成")
|
||||
|
||||
return status
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 数据库状态检查失败: {e}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 数据库状态检查失败: {e}")
|
||||
return {"error": str(e)}
|
||||
|
||||
def main():
|
||||
|
||||
Reference in New Issue
Block a user