# 模块协议 模块是同一个 FastAPI 进程内的业务边界。 它不是独立服务。 ## 注册 ```python from iti import create_app from my_app.modules.example import ExampleModule app = create_app(modules=[ExampleModule()]) ``` ## 模块类 ```python class ExampleModule: name = "example" def init_app(self, app): pass def register_routes(self, app): app.include_router(router) def register_permissions(self, app): pass def register_menu_seed(self, app): pass def register_tasks(self, app): pass ``` 执行顺序: 1. `init_app` 2. `register_tasks` 3. `register_routes` 4. `register_permissions` 5. `register_menu_seed` ## 路由 使用 FastAPI 原生 `APIRouter`。 ```python from fastapi import APIRouter from iti.responses import ok router = APIRouter(prefix="/example", tags=["example"]) @router.get("/ping") def ping(): return ok({"pong": True}) ``` ## 权限元数据 ```python from iti.modules import ModulePermission def register_permissions(self, app): app.state.iti_modules.register_permission( ModulePermission("example:item:list", "示例列表") ) ``` 框架负责收集元数据。 具体授权由 `PermissionProvider` 决定。 单独使用 `iti-flask` 时可注入自己的 provider。 使用 `iti-system` 时由系统包提供数据库 provider。