Skip to content

应用工厂与全局配置

app/__init__.py 是整个后端系统的“心脏”。它通过插件化的设计,将数据库 ORM、安全验证、数据压缩和跨域访问等核心能力有机地结合在一起。


系统通过 create_app() 函数实现应用实例的延时创建。这种架构带来了以下工程优势:

  • 配置隔离:支持在不同的环境下(开发、测试、生产)加载不同的 Config 对象。
  • 避免循环引用:通过 db.init_app(app) 的方式,允许插件在独立于 App 实例的情况下进行定义。
  • 便于横向扩展:可以轻松地为同一套业务逻辑创建多个 App 实例。

SQLAlchemy

核心 ORM 引擎,负责所有仿真数据与用户档案的持久化。

JWT Manager

基于 Token 的身份验证方案,驱动跨域安全访问与管理员权限校验。

Flask-Compress

关键性能组件。由于仿真产生的结果矩阵(JSON)通常极大,此组件开启 Gzip/Brotli 压缩,可减少约 80% 的网络传输负载。

Flask-CORS

解决前后端分离架构下的跨域问题,通过白名单机制允许特定 Header 访问。


应用根据业务边界将路由拆分为四大蓝图,实现了代码的模块化管理:

模块名称路由前缀职能描述
Admin/admin用户审计、仿真记录管理与数据清理
Simulation/api核心 CPD 计算任务提交、状态轮询与结果调取
Auth/auth用户注册、登录、Token 签发与有效性检查
XRD/api/xrdXRD 实验数据解析、基线校正与峰位提取

CORS(app, resources={
r"/*": {
"origins": "*",
"allow_headers": ["Content-Type", "Authorization"], # 允许前端携带 JWT Token
"methods": ["GET", "POST", "DELETE", "OPTIONS"]
}
})
  1. 实例化:在全局作用域创建插件实例(如 db = SQLAlchemy())。
  2. 加载配置:通过 app.config.from_object(Config) 注入全局变量。
  3. 延迟绑定:在 create_app 内部调用 init_app(app),将插件与当前应用实例挂钩。
  4. 数据库迁移:集成 Migrate 插件,支持通过命令行同步数据库表结构变更。