__init__.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """方案计划文档管理系统(DMS)后端模块。"""
  2. from __future__ import annotations
  3. from flask import Flask
  4. from dms.api.v1 import api_v1
  5. from dms.api.v1.blueprint import (
  6. register_dms_response_headers,
  7. register_dms_routing_error_handlers,
  8. )
  9. from dms.config import load_dms_config
  10. from dms.extensions import db
  11. from dms.services.document_relation_service import load_relation_presets
  12. from dms.services.ui_dictionary_service import load_ui_dictionary_config
  13. from dms.storage.paths import ensure_storage_directories
  14. from dms.services.document_converter import create_converter
  15. def init_dms(app: Flask) -> None:
  16. """初始化独立DMS基础设施并注册 ``/api/v1`` Blueprint。"""
  17. app.config.from_mapping(load_dms_config())
  18. app.extensions["dms_ui_dictionaries"] = load_ui_dictionary_config(
  19. app.config["DMS_UI_DICTIONARY_CONFIG_PATH"]
  20. )
  21. app.extensions["dms_relation_presets"] = load_relation_presets(
  22. app.config["DMS_DOCUMENT_RELATION_PRESET_CONFIG_PATH"]
  23. )
  24. app.extensions["dms_document_converter"] = create_converter(app.config)
  25. db.init_app(app)
  26. # 导入模型以确保SQLAlchemy metadata完整;不触发数据库连接。
  27. import dms.models # noqa: F401
  28. ensure_storage_directories(app.config["DMS_STORAGE_ROOT"])
  29. app.register_blueprint(api_v1)
  30. register_dms_routing_error_handlers(app)
  31. register_dms_response_headers(app)
  32. __all__ = ["init_dms"]