/**
 * 从格式化后的表格数据构建 selectedData
 *
 * @param selectedCell - 选中的单元格信息
 * @param formattedTableData - 格式化后的完整表格数据（AI可理解格式）
 * @returns 构建好的 selectedData，用于提交给 AI 接口
 */
export function formatSelectedData(selectedCell, formattedTableData) {
    var _a, _b;
    // 如果没有选中单元格，返回空数组
    if (!selectedCell) {
        return [];
    }
    // 如果没有格式化数据，返回空数组
    if (!formattedTableData || formattedTableData.length === 0) {
        return [];
    }
    const { type, rowId, columnId, selectedRowKeys, rowData } = selectedCell;
    switch (type) {
        case 'cell': {
            // 选中单元格：返回 { rowId, rowData: { [columnId]: value } }
            if (!rowId || !columnId) {
                return [];
            }
            // rowData 是原始数据行对象，包含实际的主键字段（如 id）
            const actualRowId = (_a = rowData === null || rowData === void 0 ? void 0 : rowData.id) !== null && _a !== void 0 ? _a : rowId;
            // 查找对应的行，处理 ID 类型转换（数字或字符串）
            // 先尝试用 actualRowId 匹配（实际主键值），如果找不到，再用 rowId 匹配（可能是虚拟行 ID）
            let row = formattedTableData.find((r) => String(r.id) === String(actualRowId) || r.id === actualRowId);
            if (!row && actualRowId !== rowId) {
                row = formattedTableData.find((r) => String(r.id) === String(rowId) || r.id === rowId);
            }
            if (!row) {
                return [];
            }
            const result = [
                {
                    rowId: row.id,
                    rowData: {
                        [columnId]: (_b = row[columnId]) !== null && _b !== void 0 ? _b : null,
                    },
                },
            ];
            return result;
        }
        case 'row': {
            // 选中行：返回 { rowId, rowData }，rowData 为完整的行数据
            // 使用宽松相等匹配（selectedRowKeys 可能为数字，formattedTableData 的 id 为字符串）
            if (!(selectedRowKeys === null || selectedRowKeys === void 0 ? void 0 : selectedRowKeys.length)) {
                return [];
            }
            const result = selectedRowKeys
                .map((key) => formattedTableData.find((r) => String(r.id) === String(key)))
                .filter((row) => row != null)
                .map((selectedRow) => ({
                rowId: selectedRow.id,
                rowData: selectedRow,
            }));
            return result;
        }
        case 'column': {
            // 选中列：返回 { rowId, rowData: { [columnId]: value } }
            if (!columnId) {
                return [];
            }
            const result = formattedTableData.map((row) => {
                var _a;
                return ({
                    rowId: row.id,
                    rowData: {
                        [columnId]: (_a = row[columnId]) !== null && _a !== void 0 ? _a : null,
                    },
                });
            });
            return result;
        }
        default:
            return [];
    }
}
