87 Commits

Author SHA1 Message Date
9f03dc27cc fix(security): 修复token认证过滤器异步刷新异常处理
- 添加Slf4j注解用于日志记录
- 在load方法中添加try-catch块捕获ServiceException异常
- 当远端token过期或校验失败时返回LOGIN_USER_EMPTY而不是抛出异常
- 记录token校验失败的日志信息避免被Guava包装为ExecutionException
- 防止异步刷新线程将预期的验证异常作为未捕获异常打印到日志中
2026-05-26 19:11:17 +08:00
d669d53a80 feat(project): 添加项目进度自动计算功能
- 在 ProjectMapper 中新增 updateProgressRateById 方法,支持单独更新项目进度
- 在 ProjectService 中新增 recalcProgress 接口,用于重新计算项目进度
- 实现 ProjectServiceImpl 的进度重计算逻辑,通过根任务平均进度更新项目进度
- 新增 ProjectTaskMapper 的 selectRootTaskAvgProgressByProjectId 查询方法
- 在任务创建、更新、删除、状态变更等操作后触发项目进度重计算
- 添加进度归一化处理,确保数值精度为两位小数
- 更新 CLAUDE.md 文档,加强技术风险判断要求
2026-05-25 14:17:37 +08:00
df13a90107 feat(project): 添加项目任务跨执行聚合查询功能
- 新增 ObjectPermissionService.hasPermission 非抛模式权限检查方法
- 实现 ProjectObjectPermissionService.hasPermission 权限验证逻辑
- 为 ProductObjectPermissionService 预留空实现并添加日志警告
- 在 ProjectExecutionController 中支持负数 pageSize 查询全部功能
- 添加 ProjectTaskConstants.PERMISSION_LIST_ALL 权限码常量定义
- 扩展 ProjectTaskMapper 支持跨执行聚合分页、状态统计和摘要查询
- 更新 ProjectTaskRespVO 包含执行名称和状态码字段
- 实现 ProjectTaskService.assembleTaskRespVOPageCrossExecution 跨执行装配方法
- 优化任务服务中的执行信息批量回填和生命周期应用逻辑
- 统一使用服务器时区 Asia/Shanghai 处理日期时间操作
- 为 .claude 设置添加新的代码搜索和分析命令
2026-05-23 14:18:15 +08:00
8a36b49128 feat(project): 添加项目任务跨执行聚合查询功能
- 新增 ObjectPermissionService.hasPermission 非抛模式权限检查方法
- 实现 ProjectObjectPermissionService.hasPermission 权限验证逻辑
- 为 ProductObjectPermissionService 预留空实现并添加日志警告
- 在 ProjectExecutionController 中支持负数 pageSize 查询全部功能
- 添加 ProjectTaskConstants.PERMISSION_LIST_ALL 权限码常量定义
- 扩展 ProjectTaskMapper 支持跨执行聚合分页、状态统计和摘要查询
- 更新 ProjectTaskRespVO 包含执行名称和状态码字段
- 实现 ProjectTaskService.assembleTaskRespVOPageCrossExecution 跨执行装配方法
- 优化任务服务中的执行信息批量回填和生命周期应用逻辑
- 统一使用服务器时区 Asia/Shanghai 处理日期时间操作
- 为 .claude 设置添加新的代码搜索和分析命令
2026-05-23 14:18:04 +08:00
dk
c9549bed46 feat(新增需求评审功能): 新增需求评审功能。
fix(产品需求、项目需求): 按照会议意见修改诸多细节。
fix(产品对象域的概览界面): 提供相应接口给前端。
2026-05-22 13:52:29 +08:00
dk
5caf3bbdc9 Merge branch 'main' of http://192.168.1.22:3000/Microservice/cn-rdms 2026-05-22 13:51:17 +08:00
caozehui
9e4f8becc8 docs(ticket): update child split entry 2026-05-22 13:46:01 +08:00
dk
58eed8234a feat(新增需求评审功能): 新增需求评审功能。
fix(产品需求、项目需求): 按照会议意见修改诸多细节。
fix(产品对象域的概览界面): 提供相应接口给前端。
2026-05-22 13:45:24 +08:00
caozehui
b4e9685344 docs(ticket): add ticket design spec 2026-05-22 13:36:58 +08:00
caozehui
2ad9a4e206 fix(dict): 添加字典类型参量 2026-05-22 10:02:58 +08:00
fd637ae604 chore(git): 添加 Claude Code 本地工作区到忽略列表
- 在 .gitignore 中新增 .claude/ 目录
- 防止本地工作区文件被提交到仓库
- 保持仓库整洁避免临时文件污染
2026-05-21 21:19:55 +08:00
1bee5eb05b fix(project): 修复项目执行管理中的多项问题并优化字典数据功能
- 修复字典数据分页接口命名错误,从 getDictTypePage 改为 getDictDataPage
- 修复字典数据查询排序逻辑,从 orderByDesc 改为 orderByAsc 并增加 id 排序
- 更新字典数据分页请求参数验证,将 dictType 设为必填项并添加非空验证
- 在字典数据简单响应对象中添加备注字段
- 修复项目执行删除权限验证,允许非初始态执行删除但阻止已完成执行删除
- 添加项目执行和任务优先级验证错误码常量
- 优化项目执行删除逻辑,支持级联软删相关任务、工作日志和协办数据
- 添加项目需求关联验证,防止无效需求关联到执行
- 修复执行协办数据批量删除方法的参数验证逻辑
- 添加工时完成难度验证错误码,完善项目需求删除前检查机制
- 更新 CLAUDE.md 文档,补充种子 SQL 编写规范和雪花 ID 处理说明
2026-05-21 21:17:54 +08:00
caozehui
19637d74a4 fix(personal-item): 个人事项&任务添加type类型字段 2026-05-21 13:59:45 +08:00
caozehui
d069948d2a feat(personal-item): 个人事项 2026-05-21 10:31:09 +08:00
caozehui
3199c876c3 fix(file): 上传文件微调 2026-05-19 14:48:18 +08:00
caozehui
b6d31ab156 feat(personal-center): 个人头像更新 2026-05-19 10:56:13 +08:00
1ef86fc1cb feat(guidelines): 更新工作指引并添加批量成员管理功能
- 简化 AGENTS.md 内容,统一引用 CLAUDE.md 作为主要指引
- 更新 CLAUDE.md 中的工作方式和验证流程说明
- 添加产品和项目成员批量新增/移出的错误码定义
- 扩展系统角色 API 响应 DTO,增加可见性字段
- 实现产品团队成员批量新增和批量移出控制器接口
- 添加产品成员批量操作的服务层实现和业务校验逻辑
- 实现项目团队成员批量操作的相关控制器接口
- 优化产品成员列表查询,过滤不可见角色行
- 添加批量操作的审计日志记录功能
2026-05-18 21:16:11 +08:00
dk
75886d7af5 fix(产品需求、项目需求): 按照会议所说进行修改。 2026-05-18 16:44:29 +08:00
50b84a57bb fix(gateway): 优化网关连接池和服务端保活配置
- 配置网关HttpClient连接池max-idle-time为30s,确保小于下游服务keep-alive-timeout
- 设置网关连接超时时间为10s,响应超时时间为30s
- 配置下游服务tomcat keep-alive-timeout为60s,避免与网关连接池形成竞争条件
- 将灰度负载均衡器日志级别从warn调整为debug,减少本地开发环境日志噪音
- 添加系统性调试技能配置到Claude设置中
2026-05-18 08:28:33 +08:00
caozehui
bd05f6d593 feat(personal-center): 实现个人信息功能 2026-05-15 15:52:50 +08:00
470096aa9a feat(gateway): 修改文件上传接口返回结构并添加认证路径白名单
- 将 POST /system/file/upload 接口返回结构从字符串改为 { id: string, url: string } 对象
- 添加 id 字段作为 infra_file.id 的字符串形式,解决前端精度丢失问题
- 新增 SKIP_AUTH_PATHS 白名单集合,包含登录、登出、刷新令牌等免校验路径
- 在网关过滤器中添加白名单检查逻辑,跳过指定路径的 access token 校验
- 解决过期 token 拦截导致刷新令牌接口无法正常执行的问题
2026-05-15 13:38:06 +08:00
4ad2ddeabe feat(file): 扩展文件上传响应信息并增强匿名文件访问安全控制
- 在FileUploadRespVO中增加configId和path字段,丰富文件上传返回信息
- 新增selectByConfigIdAndPath方法用于按配置ID和路径查询文件记录
- 在getFileContent服务中添加存在性校验,防止已删除文件被匿名访问
- 更新getFileContent接口注释为"获取文件内容(匿名)",明确使用场景
- 为图片文件添加缓存控制头,设置max-age为一天并使用ETag实现条件缓存
- 通过DigestUtil计算文件内容SHA256作为ETag值,优化CDN和网关层缓存命中
2026-05-15 09:48:36 +08:00
caozehui
9ee49b1863 feat(project): 新增对象状态模型与状态流转管理能力
- 新增对象状态模型和状态流转的后台管理接口
  - 补充分页查询、增删改查及批量删除能力
  - 增加状态编码、初始状态和流转配置的唯一性校验
  - 增加状态引用校验和删除前校验
  - 统一 Swagger 注解依赖为 jakarta 版本以适配 Spring Boot 3
2026-05-15 09:21:10 +08:00
be7e0d6162 feat(project): 添加项目成员响应VO中的附加角色名称字段
- 引入 ArraySchema 注解用于描述角色名称数组
- 添加 additionalRoleNames 字段存储非主角色的中文名列表
- 设置默认值为 Collections.emptyList() 确保单角色时为空数组
- 提供多角色场景支持(如同人 manager + creator)
- 完善注释说明字段用途和使用场景
2026-05-14 13:58:55 +08:00
8f6b762bf3 feat(system): 扩展用户部门权限功能
- 在 AdminUserService 中新增 listEnabledUserIdsByDeptIds 方法获取指定部门集合下启用且未离职的用户 ID 集合
- 在 DeptService 中新增 listDescendantDeptIds 方法获得指定部门集合及其所有子孙部门的 ID 集合
- 在 DeptService 中新增 listCodesByIds 方法按 id 集合批量查询部门 code 集合
- 在 OrgLeaderRelationService 中新增 listEffectiveDeptIdsByUserId 方法查询指定用户当前生效的负责人关系所对应的 dept_id 集合
- 在 PermissionApi 中新增 isSuperAdmin 接口判断用户是否超管
- 在 ObjectPermissionApi 中新增 getObjectRolePermissionDetailMerged 接口按 roleId 列表聚合菜单 + 权限码
- 扩展 ProductContextRoleRespVO 添加多角色场景的附加角色名称列表
- 扩展 ProductCreateWithTeamReqVO 支持创建时添加关心人用户 ID 列表
- 优化 ProductMemberServiceImpl 支持同一用户多角色显示,区分主角色和附加角色
- 新增 MEMBER_ACTION_REACTIVATE 复活动作类型用于处理 INACTIVE 成员行重新激活场景
- 在 ObjectStatusModelDO 中新增 progressExcludedFlag 字段控制是否参与上层进度统计
- 更新 AGENTS.md 和 CLAUDE.md 添加 Git 操作纪律规范
- 在 rdms-project-api 中新增多个错误码常量支持角色转移和内置角色配置验证
2026-05-14 13:58:40 +08:00
dk
3946c0a0aa feat(项目需求): 开发项目需求的富文本和附件功能。 2026-05-13 22:55:31 +08:00
dk
e1db030c37 Merge branch 'main' of http://192.168.1.22:3000/Microservice/cn-rdms 2026-05-13 20:56:58 +08:00
dk
544b56a5d9 feat(项目需求): 开发项目需求。 2026-05-13 20:56:48 +08:00
dk
7b4edd6b59 feat(项目需求): 开发项目需求。 2026-05-13 20:56:16 +08:00
dk
43d8be724e feat(项目需求): 开发项目需求。 2026-05-13 20:54:17 +08:00
220dec9b6c feat(file): 改造文件上传接口返回结构
- 将 POST /system/file/upload 接口返回结构从 string 改为 { id: string, url: string }
- id 字段以字符串形式返回 infra_file.id,避免 JavaScript 数值精度丢失问题
- 保持接口路径、方法和入参完全不变,仅修改返回格式
- 添加 GET /system/file/download 接口用于文件下载功能
- 优化 AppFileController 中的文件上传实现逻辑
- 更新 AuthConvert 和 AuthUserInfoRespVO 添加用户昵称和头像字段
- 在 CLAUDE.md 中补充鉴权通道和 HTTP 动词语义说明文档
- 在 ErrorCodeConstants.java 中添加多个项目管理和执行相关的错误码定义
- 删除执行成员相关的数据库表和接口定义(执行协办人替代方案)
- 在 FileMapper 中增加按 URL 查询文件的方法支持
2026-05-12 21:32:32 +08:00
dk
4f6b209c3d fix(产品需求): 完善产品需求的诸多细节。 2026-05-09 18:01:42 +08:00
dk
604bf61981 fix(产品需求): 解决测试后存在的一些问题。 2026-05-09 13:44:38 +08:00
dk
7575784c01 Merge branch 'main' of http://192.168.1.22:3000/Microservice/cn-rdms 2026-05-09 13:36:47 +08:00
dk
7399f8c3da fix(产品需求): 定义并修改一些常量。 2026-05-09 13:36:31 +08:00
6f33ab9c05 feat(project): 补充项目、执行、任务相关能力 2026-05-09 10:37:27 +08:00
dk
36752d1d15 fix(产品需求): 修复产品需求使用状态和终止态字典的问题 2026-04 2026-05-07 17:07:52 +08:00
dk
73360d70ce fix(产品需求): 修复产品需求查询的问题、修复产品需求树返回数据的问题 2026-05-07 11:10:21 +08:00
dk
7913c210cd feat(产品需求): 产品需求相关代码 2026-05-06 17:49:30 +08:00
dk
06d29210ba Merge branch 'main' of http://192.168.1.22:3000/Microservice/cn-rdms
# Conflicts:
#	rdms-project/rdms-project-boot/src/main/java/com/njcn/rdms/module/project/service/product/ProductServiceImpl.java
2026-04-28 16:58:35 +08:00
dk
b4e1aae062 feat(产品需求): 产品和产品需求相关的测试类 2026-04-28 16:53:33 +08:00
dk
9ad7e063c0 feat(产品需求): 产品和产品需求相关的测试类 2026-04-28 16:50:04 +08:00
dk
846348e1aa feat(user): 支持前端用用户昵称字段进行模糊搜索
fix(post): 使岗位排序能按照sort字段来排序。
2026-04-28 16:43:38 +08:00
ae90dcec24 feat(project): 为项目活动时间线添加成员角色名称显示功能
- 在 ObjectActivityConstants 中添加 MEMBER_ACTION_UPDATE 类型支持
- 为 ProductActivityQueryService 和 ProductActivityTimelineQueryService
  添加角色名称加载和缓存功能
- 实现角色名称解析和 JSON 数据结构扩展
- 添加相关单元测试验证角色名称显示逻辑
- 集成 ObjectPermissionApi 获取角色信息并实现缓存机制
2026-04-24 16:22:23 +08:00
ee732b97bf feat(project): 新增产品动态时间线接口并重构活动查询逻辑
- 新增 GET /project/product/{id}/activities/page 接口用于产品动态时间线分页查询
- 添加 ProductActivityTimelinePageReqVO 和 ProductActivityTimelineRespVO 数据传输对象
- 实现 ProductActivityTimelineQueryService 服务处理动态时间线查询逻辑
- 在 BizAuditLogMapper 中新增按业务类型和动作类型查询的方法
- 在 ProductStatusLogMapper 中新增按产品ID和动作类型查询的方法
- 将硬编码的活动类型常量抽取到 ObjectActivityConstants 统一管理
- 重构 ProductActivityQueryService 使用统一的常量和查询方法
- 更新 ProductMemberServiceImpl 和 ProductServiceImpl 使用新的活动常量
- 添加相应的单元测试验证新接口和查询逻辑的正确性
- 新增产品对象首页改版设计文档和产品动态时间线接口需求说明文档
2026-04-24 15:43:38 +08:00
0a6d70f7cf feat(permission): 新增对象权限API接口及实现
- 定义ObjectPermissionApi接口提供对象作用域权限查询功能
- 实现ObjectPermissionApiImpl提供角色权限查询和转换逻辑
- 添加ObjectMenuRespDTO、ObjectRoleRespDTO和ObjectRolePermissionRespDTO数据传输对象
- 实现按角色ID、角色编码查询对象作用域角色及权限的功能
- 提供获取对象作用域角色菜单与权限聚合结果的方法
- 添加完整单元测试覆盖对象权限API的主要业务场景
2026-04-23 09:23:33 +08:00
156728b1b9 feat(permission): 重构权限系统实现对象级别权限控制
- 在PermissionService中新增getScopedMenusByRoleId和getScopedPermissionsByRoleId方法
- 实现getScopedMenusByRoleId方法用于获取角色的对象范围菜单列表
- 实现getScopedPermissionsByRoleId方法用于获取角色的对象范围权限集合
- 添加getEnabledScopedRole私有方法确保只处理启用状态的角色对象
- 在ProductMemberServiceImpl中替换SystemRoleMapper为ObjectPermissionApi调用
- 将验证产品角色的方法改为调用远程权限接口验证
- 更新ProductObjectPermissionService使用远程权限接口替代本地查询
- 修改ProductServiceImpl中权限获取逻辑使用新的对象权限API
- 移除原有的系统菜单和角色相关的数据对象依赖
- 在测试类中更新模拟对象和断言逻辑适配新的权限接口调用
2026-04-23 09:22:43 +08:00
2943a6255b docs(product): 删除产品管理SQL口径和业务设计文档
- 移除02-产品管理SQL已确认口径文档
- 移除02-产品管理业务设计文档
- 清理产品管理模块的详细设计说明
- 删除产品需求状态字段口径定义
- 移除来源承接与需求拆分口径说明
- 清理需求终态原因承接口径内容
- 删除产品生命周期管理设计
- 移除产品团队权限管理规范
- 清理产品与项目关系约束说明
- 删除轻量需求管理业务规则
- 移除产品状态机与流程设计
- 清理权限与动作矩阵定义
2026-04-22 18:18:38 +08:00
dk
f8231c2d51 feat(user): 支持前端用用户昵称字段进行模糊搜索
fix(post): 使岗位排序能按照sort字段来排序。
2026-04-22 14:38:41 +08:00
a1f5936d20 Merge remote-tracking branch 'origin/main' 2026-04-18 14:20:06 +08:00