# 按顺序继续完成程序

## 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 权限错误；本轮自动上下文改用本地只读文件检查。
