""" 数据库初始化 API """ from flask import jsonify from lib.db import execute_update from . import init_bp @init_bp.route('/init-tables', methods=['POST']) def init_tables(): """初始化数据库表""" try: # 创建配置表 create_config_table = """ CREATE TABLE IF NOT EXISTS t_daily_report_config ( id BIGINT NOT NULL COMMENT '配置 ID', config_name VARCHAR(100) NOT NULL COMMENT '配置名称', split_type VARCHAR(20) NOT NULL COMMENT '拆分方式', split_value VARCHAR(100) NOT NULL COMMENT '拆分值', split_name VARCHAR(200) NULL COMMENT '拆分显示名称', selected_fields VARCHAR(3000) NOT NULL COMMENT '选择的字段列表', sum_fields VARCHAR(3000) NULL COMMENT '求和字段列表', is_active TINYINT NULL COMMENT '是否启用', sort_order INT NULL COMMENT '排序顺序', create_time DATETIME NULL COMMENT '创建时间', update_time DATETIME NULL COMMENT '更新时间' ) UNIQUE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 1 PROPERTIES("replication_num" = "1") """ execute_update(create_config_table) # 创建历史表 create_history_table = """ CREATE TABLE IF NOT EXISTS t_daily_report_history ( id BIGINT NOT NULL COMMENT '历史 ID', report_date VARCHAR(20) NULL COMMENT '报表日期', start_time VARCHAR(50) NULL COMMENT '开始时间', end_time VARCHAR(50) NULL COMMENT '结束时间', split_type VARCHAR(20) NULL COMMENT '拆分方式', split_value VARCHAR(100) NULL COMMENT '拆分值', split_name VARCHAR(200) NULL COMMENT '拆分显示名称', config_id BIGINT NULL COMMENT '配置 ID', config_name VARCHAR(200) NULL COMMENT '配置名称', total_orders INT NULL COMMENT '订单总数', total_amount DECIMAL(10,2) NULL COMMENT '总金额', sum_results VARCHAR(2000) NULL COMMENT '求和结果', file_path VARCHAR(500) NULL COMMENT '文件路径', status TINYINT NULL COMMENT '状态', create_time DATETIME NULL COMMENT '创建时间' ) UNIQUE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 1 PROPERTIES("replication_num" = "1") """ execute_update(create_history_table) # 为已存在的表添加 config_name 字段(如果不存在) try: execute_update(""" ALTER TABLE t_daily_report_history ADD COLUMN IF NOT EXISTS config_name VARCHAR(200) NULL COMMENT '配置名称' """) except Exception as e: print(f"[数据库] 添加 config_name 字段时出错(可能已存在): {e}") return jsonify({'success': True, 'message': '数据库表初始化成功'}) except Exception as e: return jsonify({'success': False, 'message': str(e)}), 500