feat: restore source parity and harden agent runtime
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
报表渲染引擎(Phase 3)
|
||||
- 参数单元格替换
|
||||
- dataSource 单格填充
|
||||
- dataSource 列表向下扩展(list / down)
|
||||
"""
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from online_dev.report_manager.engine.column_layout import apply_column_layout
|
||||
from online_dev.report_manager.engine.code_cells import apply_code_cells
|
||||
from online_dev.report_manager.engine.expression_eval import apply_expression_cells
|
||||
from online_dev.report_manager.engine.merge_recalc import apply_merge_recalc_after_expand
|
||||
from online_dev.report_manager.engine.preview_mvp import (
|
||||
apply_parameter_cells,
|
||||
apply_snapshot_placeholders,
|
||||
)
|
||||
|
||||
|
||||
def _apply_data_source_cells(
|
||||
snapshot: Dict[str, Any],
|
||||
cells_meta: Dict[str, Any],
|
||||
datasets: Dict[str, List[Any]],
|
||||
) -> tuple[Dict[str, Any], list[tuple[str, int, int, int]]]:
|
||||
from online_dev.report_manager.engine.data_expand import apply_data_source_cells
|
||||
|
||||
return apply_data_source_cells(snapshot, cells_meta, datasets)
|
||||
|
||||
|
||||
def transform(
|
||||
snapshot: Dict[str, Any],
|
||||
cells: Dict[str, Any],
|
||||
datasets: Dict[str, List[Any]],
|
||||
params: Optional[Dict[str, Any]] = None,
|
||||
column_list: Optional[List[Any]] = None,
|
||||
fence_list: Optional[List[Any]] = None,
|
||||
) -> Dict[str, Any]:
|
||||
"""
|
||||
将数据集填充到 Univer snapshot。
|
||||
"""
|
||||
if not snapshot:
|
||||
return snapshot or {}
|
||||
cells_meta = cells or {}
|
||||
params = params or {}
|
||||
layout_list = fence_list if fence_list else column_list
|
||||
original = snapshot
|
||||
|
||||
filled = apply_parameter_cells(snapshot, cells_meta, params)
|
||||
filled = apply_snapshot_placeholders(filled, params)
|
||||
filled = apply_code_cells(filled, params)
|
||||
filled, pending_group_merges = _apply_data_source_cells(filled, cells_meta, datasets)
|
||||
filled = apply_merge_recalc_after_expand(original, filled)
|
||||
if pending_group_merges:
|
||||
from online_dev.report_manager.engine.data_expand import apply_pending_group_merges
|
||||
|
||||
filled = apply_pending_group_merges(filled, pending_group_merges)
|
||||
filled = apply_expression_cells(filled, cells_meta, datasets, params)
|
||||
if layout_list:
|
||||
filled = apply_column_layout(filled, layout_list)
|
||||
return filled
|
||||
Reference in New Issue
Block a user