架构设计¶
ExcelFlow 使用标准 src 包布局,核心调用链为:
CLI
→ ExtractionService
→ ExcelSpecRepository
→ SpecValidator
→ PandasExtractionEngine
→ SafeExpressionEvaluator
→ OutputWriterFactory → OutputWriter
模块职责¶
cli.py:解析template/validate/preview/run命令;成功返回 0,校验失败或捕获到异常时返回 1。repository.py:读取五张基础配置表及两个可选聚合配置表,构造ExtractionSpec。schema.py:配置模型、校验结果和字段名称规则。validator.py:执行不依赖源数据的计划结构校验。源 Sheet、源表头、源字段和运行期类型问题由 Engine 在run时发现。engine.py:读取源 Sheet、按顺序合并 DataFrame、过滤,并执行逐行字段映射或分组聚合。expression.py:用受限 AST 解释器计算衍生列,避免执行任意 Python。output.py:CSV、JSONL、XLSX 输出策略及工厂。service.py:编排读取、校验、启用检查、执行与写出。template.py:生成计划模板及下拉选项。
设计原则¶
Repository 隔离 Excel 配置读取;Strategy 让执行引擎和 Writer 可替换;Factory 集中选择 Writer;Service 保持 CLI 与业务编排分离。构造函数依赖注入使测试可以替换 Repository、Validator、Engine 和 Writer Factory。
运行时会把任务声明的所有 Sheet 读入内存并交给 Pandas,因此当前定位是中小规模 Excel 数据加工,不是流式或超大数据引擎。
表达式能力通过显式 AST 节点和函数白名单扩展,不能改用 eval()。逐行函数由表达式解释器映射到受控 Pandas/NumPy/标量操作;跨行函数由 Engine 的独立聚合阶段执行。普通路径为“读取→关联→过滤→字段映射”,聚合路径为“读取→关联→过滤→分组聚合”。新增配置字段时应同时更新模板、Schema 常量、Repository/Validator、教程与测试。