feat: restore source parity and harden agent runtime

This commit is contained in:
2026-06-22 11:17:26 +08:00
parent e33f08277b
commit 0793eb82d6
596 changed files with 168879 additions and 290 deletions
@@ -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