Files
wenzi/docs/prd/PRD_按钮级实现证据矩阵.md

14 KiB
Raw Blame History

PRD 按钮级实现证据矩阵

本文档对照管理后台 PRD v1.0 的按钮级权限要求,逐项验证代码实现与测试证据。 基线94个 Canonical 权限码V85/V86新增4个细粒度权限参见 权限码映射表.md

修订历史

版本 日期 修订人 变更内容
1.3 2026-03-23 Claude 新增细粒度权限点V85/V86迁移activity.participant.view.ALLrisk.detail.view.ALLrisk.alert.handle.ALLapproval.comment.add.ALL;更新系统配置路由权限(system.index.view.ALL
1.2 2026-03-22 Claude 新增审批批量接口(/approval/batch/approval/batch-transfer/approval/delegate);新增奖励拒绝接口(/rewards/admin/{id}/reject);更新证据行号
1.1 2026-03-22 Claude 修复审批中心按钮权限码对齐(approval.index.handle.ALL -> approval.execute.*.ALL);更新风控模块路径为 /risks/*更新API Key管理路径为 /keys/*
1.0 2026-03-21 Claude 初始版本,对照 PRD 9.2~9.8 章节

9.2 活动管理 - 按钮级权限

PRD按钮描述 前端页面 后端接口 权限码 测试用例ID 当前状态 证据文件
创建活动 ActivityCreateView.vue POST /api/v1/activities activity.index.create.ALL ActivityControllerContractTest 已实现 ActivityController.java:88
查看活动列表 ActivityListView.vue GET /api/v1/activities activity.index.view.ALL - 已实现 -
查看活动详情 ActivityDetailView.vue GET /api/v1/activities/{id} activity.index.view.ALL - 已实现 -
编辑活动 ActivityDetailView.vue PUT /api/v1/activities/{id} activity.index.update.ALL ActivityControllerContractTest 已实现 ActivityController.java
发布活动 ActivityDetailView.vue POST /api/v1/activities/{id}/publish activity.index.publish.ALL ActivityControllerContractTest 已实现 ActivityController.java
暂停活动 ActivityDetailView.vue POST /api/v1/activities/{id}/pause activity.index.pause.ALL - 已实现 ActivityController.java
恢复活动 ActivityDetailView.vue POST /api/v1/activities/{id}/resume activity.index.resume.ALL - 已实现 ActivityController.java
下线活动 ActivityDetailView.vue POST /api/v1/activities/{id}/end activity.index.end.ALL - 已实现 ActivityController.java
归档活动 ActivityDetailView.vue POST /api/v1/activities/{id}/archive activity.index.update.ALL - 已实现 ActivityController.java
删除活动 ActivityDetailView.vue DELETE /api/v1/activities/{id} activity.index.delete.ALL ActivityControllerContractTest 已实现 ActivityController.java
克隆活动 ActivityListView.vue POST /api/v1/activities/{id}/clone activity.index.clone.ALL - 已实现 ActivityService.java
导出活动 ActivityListView.vue GET /api/v1/activities/export activity.index.export.ALL - 已实现 ActivityController.java

9.3 用户管理 - 按钮级权限

PRD按钮描述 前端页面 后端接口 权限码 测试用例ID 当前状态 证据文件
查看用户列表 UsersView.vue GET /api/v1/users user.index.view.ALL - 已实现 -
查看用户详情 UserDetailView.vue GET /api/v1/users/{id} user.index.view.ALL - 已实现 -
创建用户 InviteUserView.vue POST /api/v1/users user.index.create.ALL - 已实现 -
编辑用户 UserDetailView.vue PUT /api/v1/users/{id} user.index.update.ALL - 已实现 -
删除用户 UsersView.vue DELETE /api/v1/users/{id} user.index.delete.ALL - 已实现 -
冻结用户 UserDetailView.vue POST /api/v1/users/{id}/freeze user.index.freeze.ALL - 已实现 -
解冻用户 UserDetailView.vue POST /api/v1/users/{id}/unfreeze user.index.unfreeze.ALL - 已实现 -
导出用户 UsersView.vue GET /api/v1/users/export user.index.export.ALL - 已实现 -
实名认证 UserDetailView.vue POST /api/v1/users/{id}/certify user.index.certify.ALL - 已实现 -
管理用户标签 UserDetailView.vue POST /api/v1/users/{id}/tags user.tag.add.ALL - 已实现 -

9.4 奖励管理 - 按钮级权限

注意:奖励管理后端实际路径为 /api/v1/rewards/admin。 注意:"拒绝奖励"接口已独立实现为 POST /api/v1/rewards/admin/{id}/reject2026-03-22 新增)。

PRD按钮描述 前端页面 后端接口 权限码 测试用例ID 当前状态 证据文件
查看奖励列表 RewardsView.vue GET /api/v1/rewards/admin reward.index.view.ALL - 已实现 RewardController.java
申请奖励 RewardApplyView.vue POST /api/v1/rewards/admin/apply reward.index.apply.ALL - 已实现 RewardController.java
审批奖励 ApprovalCenterView.vue POST /api/v1/rewards/admin/{id}/approve reward.index.approve.ALL - 已实现 RewardController.java:89
拒绝奖励 ApprovalCenterView.vue POST /api/v1/rewards/admin/{id}/reject reward.index.reject.ALL PermissionEnforcementIntegrationTest 已实现 RewardController.java:110
发放奖励 RewardsView.vue POST /api/v1/rewards/admin/{id}/grant reward.index.grant.ALL - 已实现 RewardController.java:127
取消奖励 RewardsView.vue POST /api/v1/rewards/admin/{id}/cancel reward.index.cancel.ALL - 已实现 RewardController.java:134
导出奖励 RewardsView.vue GET /api/v1/rewards/admin/export reward.index.export.ALL - 已实现 RewardController.java:175
奖励对账 RewardsView.vue GET /api/v1/rewards/admin/reconcile reward.index.reconcile.ALL - 已实现 RewardController.java:161
批量奖励 RewardsView.vue POST /api/v1/rewards/admin/batch-grant reward.index.batch.ALL - 已实现 RewardController.java:123

9.5 风险管理 - 按钮级权限

注意:风险管理前端服务层路径已统一为 /risks/*risk.ts、ApiDataService.ts与后端 RiskController.java 路径 /api/v1/risks/* 一致。

PRD按钮描述 前端页面 后端接口 权限码 测试用例ID 当前状态 证据文件
查看风控面板 RiskView.vue GET /api/v1/risks risk.index.view.ALL - 已实现 RiskView.vue:101
创建风控规则 RiskRuleFormView.vue POST /api/v1/risks/rules risk.rule.create.ALL - 已实现 RiskController.java
编辑风控规则 RiskRuleFormView.vue PUT /api/v1/risks/rules/{id} risk.rule.edit.ALL - 已实现 RiskController.java
删除风控规则 RiskRulesView.vue DELETE /api/v1/risks/rules/{id} risk.rule.delete.ALL - 已实现 RiskController.java
启用风控规则 RiskRulesView.vue POST /api/v1/risks/rules/{id}/enable risk.rule.enable.ALL - 已实现 RiskController.java
审核风控 - POST /api/v1/risks/{id}/audit risk.index.audit.ALL - ⚠️ 待实现(前端无按钮,后端无接口) -
管理黑名单 RiskView.vue POST /api/v1/risks/blacklist risk.blacklist.manage.ALL - 已实现 RiskController.java
执行拦截 RiskView.vue POST /api/v1/risks/{id}/block risk.block.execute.ALL - 已实现 RiskController.java
解除拦截 RiskView.vue POST /api/v1/risks/{id}/release risk.block.release.ALL - 已实现 RiskController.java
导出风控数据 RiskView.vue GET /api/v1/risks/export risk.index.export.ALL - 已实现 RiskController.java

9.6 审批中心 - 按钮级权限

注意:审批中心后端实际路径为 /api/v1/approval(单数),且 approve/reject/transfer 接口使用 body recordId 传参,而非路径参数。 注意:前端按钮权限码已对齐为 approval.execute.*.ALL2026-03-22 修复) 注意2026-03-22 新增独立批量审批、批量转交、委托接口

PRD按钮描述 前端页面 后端接口 权限码 测试用例ID 当前状态 证据文件
查看审批列表 ApprovalCenterView.vue GET /api/v1/approval/pending approval.index.view.ALL - 已实现 ApprovalController.java
提交审批 (业务页面) POST /api/v1/approval/submit approval.index.submit.ALL - 已实现 ApprovalController.java:131
处理审批(旧) - POST /api/v1/approval/handle approval.index.handle.ALL - ⚠️ 已废弃 ApprovalController.java:384
取消审批 ApprovalCenterView.vue POST /api/v1/approval/cancel approval.index.cancel.ALL - 已实现 ApprovalController.java:449
批量审批(新) ApprovalCenterView.vue POST /api/v1/approval/batch approval.index.batch.ALL PermissionEnforcementIntegrationTest 已实现 ApprovalController.java:473
批量转交(新) ApprovalCenterView.vue POST /api/v1/approval/batch-transfer approval.index.batch.transfer.ALL PermissionEnforcementIntegrationTest 已实现 ApprovalController.java:505
委托审批(新) ApprovalCenterView.vue POST /api/v1/approval/delegate approval.index.delegate.ALL PermissionEnforcementIntegrationTest 已实现 ApprovalController.java:547
执行通过 ApprovalCenterView.vue POST /api/v1/approval/approve approval.execute.approve.ALL - 已实现 ApprovalController.java:285; ApprovalCenterView.vue:81
执行拒绝 ApprovalCenterView.vue POST /api/v1/approval/reject approval.execute.reject.ALL - 已实现 ApprovalController.java:315; ApprovalCenterView.vue:75,134
执行转交 ApprovalCenterView.vue POST /api/v1/approval/transfer approval.execute.transfer.ALL - 已实现 ApprovalController.java:343; ApprovalCenterView.vue:78

9.7 审批超时机制 (TASK-317/318/319)

功能点 实现描述 测试用例ID 当前状态 证据文件
50%首次提醒 sendTimeoutWarning(record, flow, timeoutHours, 50) ApprovalTimeoutJobTest 已实现 ApprovalTimeoutJob.java:138
80%二次提醒 sendTimeoutWarning(record, flow, timeoutHours, 80) + 短信 ApprovalTimeoutJobTest 已实现 ApprovalTimeoutJob.java:134
100%超时处理 handleTimeout() - ESCALATE/AUTO_APPROVE/REJECT/NOTIFY ApprovalTimeoutJobTest 已实现 ApprovalTimeoutJob.java:130
提醒去重 hasReminderBeenSent() 检查 ApprovalTimeoutJobTest 已实现 ApprovalTimeoutJob.java:382
审批模板一致性校验 ApprovalTemplateConsistencyService - 已实现 ApprovalTemplateConsistencyService.java

9.8 系统配置 - 按钮级权限

注意:系统配置后端实际路径为 /api/v1/system/configs(复数),非 /api/system/config。 注意API Key前端服务层路径已统一为 /keys/*systemConfig.ts与后端 ApiKeyController.java 路径 /api/v1/keys/* 一致2026-03-22 修复)。

PRD按钮描述 前端页面 后端接口 权限码 测试用例ID 当前状态 证据文件
查看系统配置 SystemConfigView.vue GET /api/v1/system/configs system.index.view.ALL - 已实现 SystemController.java:105
修改系统配置 SystemConfigView.vue PUT /api/v1/system/configs/{key} system.config.manage.ALL - 已实现 SystemController.java:128
批量修改配置 SystemConfigView.vue PUT /api/v1/system/configs/batch system.config.manage.ALL - 已实现 SystemController.java:182
重置配置 SystemConfigView.vue POST /api/v1/system/configs/{key}/reset system.config.manage.ALL - 已实现 SystemController.java:224
管理API Key SystemApiKeysView.vue GET/POST/PUT/DELETE /api/v1/keys system.api-key.*.ALL ApiKeyControllerTest 已实现 ApiKeyController.java; systemConfig.ts
管理缓存 SystemConfigView.vue POST /api/v1/system/cache/clear system.cache.manage.ALL - 已实现 SystemController.java:265
访问敏感数据 SystemConfigView.vue GET /api/v1/system/info system.sensitive.access.ALL - 已实现 SystemController.java:319

API Key 安全实现 (PRD要求)

安全特性 实现描述 测试用例ID 当前状态 证据文件
PBKDF2加密 SecretKeyGenerator使用PBKDF2 - 已实现 ActivityService.java:429
Salt存储 加密时使用随机salt - 已实现 ActivityService.java
前缀验证 validateApiKeyPrefix() - 已实现 ActivityService.java:606
一次明文使用 API Key创建时返回明文 - 已实现 ApiKeyController.java:149
启用/禁用 enableApiKey/disableApiKey - 已实现 ApiKeyController.java
重置 resetApiKey - 已实现 ApiKeyController.java
吊销 revokeApiKey - 已实现 ApiKeyController.java

状态说明

状态 含义
已实现 功能已完整实现,有测试覆盖
⚠️ 部分实现 功能已实现但测试覆盖不足
未实现 功能尚未实现
🔄 修复中 正在修复

审计追踪

本矩阵由 Claude Code Agent 于 2026-03-23 根据 PRD v1.0 和代码审查更新。 如有疑问,请联系开发团队确认。