Files
bf1942 8938ce2708 refactor(api): 重构数据库访问为SQLAlchemy绑定的session
- 统一移除手动创建的数据库session,统一使用models模块中的db.session
- 修正项目创建接口,增加开始和结束日期的格式验证与处理
- 更新导入项目接口,使用枚举类型校验项目类型并优化异常处理
- 更新统计接口,避免多次查询假期数据,优化日期字符串处理
- 删除回滚前多余的session关闭调用,改为使用db.session.rollback()
- app.py中重构数据库初始化:统一配置SQLAlchemy,动态创建数据库路径和表
- 项目模型新增开始日期和结束日期字段支持
- 添加导入批次历史记录模型支持
- 优化工具函数中日期类型提示,移除无用导入
- 更新requirements.txt依赖版本回退,确保兼容性
- 前端菜单添加导入历史导航入口,实现页面访问路由绑定
2025-09-04 18:12:24 +08:00

65 lines
1.8 KiB
Python

from flask import Flask, render_template
from flask_cors import CORS
from models.models import db
from api.projects import projects_bp
from api.timerecords import timerecords_bp
from api.statistics import statistics_bp
from api.data_import import data_import_bp
import os
def create_app():
app = Flask(__name__,
template_folder='../templates',
static_folder='../static')
# 启用CORS支持
CORS(app)
# 数据库配置
# 获取项目根目录下的data文件夹路径
data_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'data')
os.makedirs(data_dir, exist_ok=True)
db_path = os.path.join(data_dir, 'timetrack.db')
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{db_path}'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 初始化数据库
db.init_app(app)
# 在应用上下文中创建数据库表
with app.app_context():
db.create_all()
# 注册蓝图
app.register_blueprint(projects_bp)
app.register_blueprint(timerecords_bp)
app.register_blueprint(statistics_bp)
app.register_blueprint(data_import_bp)
# 主页路由
@app.route('/')
def index():
return render_template('index.html')
@app.route('/projects')
def projects():
return render_template('projects.html')
@app.route('/timerecords')
def timerecords():
return render_template('timerecords.html')
@app.route('/statistics')
def statistics():
return render_template('statistics.html')
@app.route('/import')
def import_page():
return render_template('import.html')
return app
if __name__ == '__main__':
app = create_app()
app.run(debug=True, host='0.0.0.0', port=5000)