# skit_panel_backend/utils/pagination.py

def paginate(data_list: list, page: int, page_size: int):
    """
    一个简单的列表分页工具。
    
    :param data_list: 要分页的完整列表。
    :param page: 当前页码 (从1开始)。
    :param page_size: 每页的项目数。
    :return: 一个包含分页后数据和总数的字典。
    """
    if not isinstance(data_list, list):
        # 如果输入不是列表，返回空结果
        return {"total": 0, "list": []}
        
    total = len(data_list)
    
    # 确保页码和页面大小是正整数
    page = max(1, page)
    page_size = max(1, page_size)
    
    start = (page - 1) * page_size
    
    # 防止切片索引越界
    if start >= total:
        return {"total": total, "list": []}
        
    end = start + page_size
    
    paginated_list = data_list[start:end]
    
    return {
        "total": total,
        "list": paginated_list
    }

