Files
Book-management-system/.trellis/tasks/04-27-continue-program-sequence/prd.md
T
2026-04-27 22:07:20 +08:00

4.5 KiB

按顺序继续完成程序

Goal

继续完成 MZH Library Management 的下一组核心功能,让现有 JSP + Servlet + JDBC 图书馆系统从已完成的基础业务链路继续向完整后台能力推进。

What I already know

  • 用户要求“按顺序继续完成程序”,当前没有 active task,因此本任务用于恢复开发方向并确认下一步范围。
  • 用户已选择下一步做 报表中心
  • 项目是 Java 11 Maven WAR,使用 JSP + Servlet + MySQL/JDBC。
  • 已有认证、权限过滤、角色首页、图书目录、图书管理、读者管理、借书/还书/续借/逾期、读者借阅历史。
  • 最近提交顺序显示功能推进为:认证/权限 -> 图书 -> 读者 -> 借还续借逾期。
  • 数据库和权限模型中还预留了 manage_usersview_reportsview_system_logs 等能力。
  • 当前后台 Administration 卡片文案提到账号、角色、权限、系统维护入口,但实际还没有独立用户管理和系统日志页面。

Assumptions (temporary)

  • “按顺序”优先遵循现有业务链和权限模型:借阅链路完成后,应补齐统计报表或管理后台缺口。
  • 本轮应选择一个清晰、可验收的 MVP 模块,不把用户管理、报表、日志全部混在一次任务里。

Open Questions

  • None for this MVP.

Requirements

  • 继续沿用现有 Servlet -> Service -> DAO -> JSP 分层。
  • 新增报表中心,面向拥有 view_reports 权限的管理员和馆员。
  • 报表中心应至少展示:
    • 图书库存概览:总书目数、总册数、可借册数、不可借/归档或无可借库存的提示统计。
    • 借阅概览:当前借出、已归还、已逾期数量。
    • 逾期清单:展示读者、图书、应还日期、逾期天数等关键字段。
    • 热门借阅排行:按借阅记录数量展示 Top 图书。
  • 新页面入口应出现在 dashboard / role-home 的管理员和馆员工作区中。
  • 新功能必须接入现有角色权限体系;读者不能访问报表中心。
  • 新功能应包含 focused service checks,维持当前项目的轻量测试风格。
  • 报表数据应基于现有 booksreadersborrow_records 表,不引入新表。

Acceptance Criteria

  • 明确下一步 MVP 模块:报表中心。
  • 新模块有受权限保护的入口和页面。
  • 新模块使用现有分层和错误处理风格。
  • 管理员和馆员可打开报表中心,读者访问会被拒绝。
  • 报表页面展示库存概览、借阅概览、逾期清单、热门借阅排行。
  • 新增或更新服务层检查。
  • Maven 构建通过(当前环境未安装 mvn,已用 javac fallback 和轻量 checks 验证)。

Definition of Done (team quality bar)

  • Tests added/updated where appropriate.
  • Maven compile/package checks pass where available.
  • Docs/notes updated if behavior changes.
  • Rollout/rollback considered if risky.

Out of Scope (explicit)

  • 暂不一次性实现用户管理和系统日志页面。
  • 暂不实现图表库、导出 Excel/PDF、按日期筛选等高级报表能力。
  • 暂不引入新框架或前后端分离。
  • 暂不修改现有认证和核心借阅规则,除非所选模块必须依赖。

Technical Approach

Add a reports slice consistent with the existing architecture: entity/value objects for report summaries, DAO queries for aggregate data, a service facade for report composition and permission checks, a servlet mapped to /reports, and a JSP under WEB-INF/jsp/reports/. Reuse existing CSS patterns for compact dashboard cards and tables.

Decision (ADR-lite)

Context: The borrowing workflow is now implemented, and the permission model already contains view_reports.

Decision: Implement a server-rendered report center as the next MVP module, focused on operational summaries that can be derived from existing tables.

Consequences: This gives administrators and librarians immediate visibility into inventory and borrowing health without introducing reporting infrastructure. Date filters, exports, and charts remain future enhancements.

Technical Notes

  • README.md 描述当前项目结构和本地部署方式。
  • src/main/resources/db/schema.sql 已有 system_logs 表、view_reportsview_system_logs 权限。
  • src/main/webapp/WEB-INF/web.xml 当前未映射 reports、logs 或 users 管理 servlet。
  • src/main/webapp/WEB-INF/jsp/dashboard.jsprole-home.jsp 是新增入口的主要位置。
  • 语义代码检索 MCP 返回 403 权限错误;本轮自动上下文改用本地只读文件检查。