# Requirements Document ## Introduction 实现工作记录(Work Records)的后端分页功能。当前系统一次性加载所有工作记录数据,在数据量大时会导致性能问题和内存占用过高。需要改为真正的后端分页,每次只从数据库获取当前页的数据。 ## Glossary - **Work_Record_Service**: 后端工作记录服务,负责处理工作记录的CRUD操作和查询 - **Work_Record_API**: 前端调用的工作记录API接口 - **Pagination**: 分页机制,包含页码(page)、每页数量(page_size)、总数(total)等信息 - **Backend_Pagination**: 后端分页,数据库层面的分页查询,只返回当前页数据 - **Frontend_Pagination**: 前端分页,所有数据加载到前端后在客户端进行分页显示 ## Requirements ### Requirement 1: 后端分页查询 **User Story:** 作为系统用户,我希望工作记录列表支持后端分页,以便在数据量大时也能快速加载和浏览数据。 #### Acceptance Criteria 1. WHEN 前端请求工作记录列表时,THE Work_Record_API SHALL 接受 page 和 page_size 参数 2. WHEN page 参数未提供时,THE Work_Record_Service SHALL 默认使用第1页 3. WHEN page_size 参数未提供时,THE Work_Record_Service SHALL 默认使用每页20条 4. WHEN 执行分页查询时,THE Work_Record_Service SHALL 只从数据库获取当前页的数据 5. THE Work_Record_API SHALL 返回分页元数据,包含 total(总记录数)、page(当前页)、page_size(每页数量)、total_pages(总页数) ### Requirement 2: 分页与筛选条件组合 **User Story:** 作为系统用户,我希望在使用筛选条件时分页功能仍然正常工作,以便精确查找特定记录。 #### Acceptance Criteria 1. WHEN 同时提供分页参数和筛选条件(person_id、date、year/month、is_settled)时,THE Work_Record_Service SHALL 先应用筛选条件再进行分页 2. WHEN 筛选条件改变时,THE Work_Record_Service SHALL 返回筛选后数据的正确总数 3. THE Work_Record_Service SHALL 保持现有的排序规则(按日期降序、ID升序) ### Requirement 3: 前端分页组件适配 **User Story:** 作为系统用户,我希望分页控件能正确显示总数和页码,以便了解数据规模并快速跳转。 #### Acceptance Criteria 1. WHEN 后端返回分页数据时,THE Work_Record_List SHALL 使用返回的 total 值更新分页组件 2. WHEN 用户切换页码或每页数量时,THE Work_Record_List SHALL 向后端发送新的分页参数请求数据 3. WHEN 筛选条件改变时,THE Work_Record_List SHALL 重置到第1页并重新请求数据 ### Requirement 4: 分页参数边界处理 **User Story:** 作为系统开发者,我希望系统能正确处理异常的分页参数,以保证系统稳定性。 #### Acceptance Criteria 1. IF page 参数小于1,THEN THE Work_Record_Service SHALL 使用第1页 2. IF page_size 参数小于1或大于100,THEN THE Work_Record_Service SHALL 使用默认值20 3. IF 请求的页码超出总页数,THE Work_Record_Service SHALL 返回空数据列表和正确的分页元数据