Files
2026-04-27 22:09:23 +08:00

83 lines
4.5 KiB
Markdown

# 按顺序继续完成程序
## Goal
继续完成 MZH Library Management 的下一组核心功能,让现有 JSP + Servlet + JDBC 图书馆系统从已完成的基础业务链路继续向完整后台能力推进。
## What I already know
* 用户要求“按顺序继续完成程序”,当前没有 active task,因此本任务用于恢复开发方向并确认下一步范围。
* 用户已选择下一步做 **报表中心**
* 项目是 Java 11 Maven WAR,使用 JSP + Servlet + MySQL/JDBC。
* 已有认证、权限过滤、角色首页、图书目录、图书管理、读者管理、借书/还书/续借/逾期、读者借阅历史。
* 最近提交顺序显示功能推进为:认证/权限 -> 图书 -> 读者 -> 借还续借逾期。
* 数据库和权限模型中还预留了 `manage_users``view_reports``view_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,维持当前项目的轻量测试风格。
* 报表数据应基于现有 `books``readers``borrow_records` 表,不引入新表。
## Acceptance Criteria
* [x] 明确下一步 MVP 模块:报表中心。
* [x] 新模块有受权限保护的入口和页面。
* [x] 新模块使用现有分层和错误处理风格。
* [x] 管理员和馆员可打开报表中心,读者访问会被拒绝。
* [x] 报表页面展示库存概览、借阅概览、逾期清单、热门借阅排行。
* [x] 新增或更新服务层检查。
* [ ] 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_reports``view_system_logs` 权限。
* `src/main/webapp/WEB-INF/web.xml` 当前未映射 reports、logs 或 users 管理 servlet。
* `src/main/webapp/WEB-INF/jsp/dashboard.jsp``role-home.jsp` 是新增入口的主要位置。
* 语义代码检索 MCP 返回 403 权限错误;本轮自动上下文改用本地只读文件检查。