You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 模板与导入导出
iTi-Flask 提供统一的数据模板、导入和导出基础能力。
框架提供模板源抽象、对象、存储、任务和文件处理。
业务系统自己决定入口、字段语义、模板中心和回调处理。
## 设计边界
- 模板按业务实体建模,不按单表字段映射建模。
- 导入模板和导出模板独立。
- 模板支持编辑和版本管理。
- 模板也支持上传 Excel 作为来源。
- 执行时按任务显式选择已发布版本。
- 导入和导出都走任务。
- 没有模板时,框架按字段映射兜底。
- 模板源可来自本地表、远程模板中心、业务自定义 provider 或纯映射输入。
- `system` 不是能力开关。
- 业务项目可以自建模板中心,也可以挂远程模板中心 RPC。
- 只要实现 `ExchangeSource` 并注册进 `app.state.iti_exchange` ,就能接入同一套计划解析和模板文件生成入口。
## 框架对象
- `ExchangeTemplate`
- `ExchangeTemplateSnapshot`
- `ExchangePlan`
- `ExchangeTemplateBinding`
- `ExchangeField`
- `ExchangePlaceholder`
- `ExchangeTemplateSource`
- `ExchangeTemplateSourceKind`
- `ExchangeTaskKind`
- `ExchangeSource`
## 入口
- `iti.exchange`
- `iti.exchange.service.ExchangeService`
- `iti.exchange.routes.router`
- `iti.exchange.module.create_exchange_module()`
## 配置
```python
class DevConfig ( BaseDevConfig ):
def __init__ ( self ) -> None :
super () . __init__ ()
self . exchange_enabled = True
```
需要文件存储时复用 `file_storage` 。
## 业务接法
业务项目可直接注册 `create_exchange_module()` ,也可以自己写模块,只复用 `ExchangeService` 、`ExchangeSource`、`register_exchange_source()` 和任务注册接口。
业务通常要自己补:
- 模板字段和 placeholder 定义。
- 模板发布流程。
- 模板中心 RPC、本地表维护方式, 或自定义 source 注册方式。
- 导入回执和导出文件命名。
- 任务执行器里的实际业务处理。
- 菜单和页面入口。
模板中心可以由 `system` 提供, 也可以由业务项目自建。框架只提供统一的计划解析、模板文件生成、Excel 读写和 source 接入层。
Excel 数据处理走 `pandas` 。`openpyxl` 只处理模板结构和格式。