-
- 添加 backend/checkstyle.xml(Spring Boot 友好规则集,替换过严的 sun_checks.xml) - pom.xml 配置 maven-checkstyle-plugin 使用自定义规则 - 修复: Application.java 未使用 import - 修复: AuthController / UserController 通配符 import 改为精确 import - 修复: GlobalExceptionHandler 两处未使用 import
-
M2: UserUpdateReqDTO 添加 @NotBlank/@Pattern/@NotNull 字段校验 M3: UserFormDrawer InitialData 补 permGroupIds 字段并初始化 M4: 列表查询加 bCanEditDoc 返回字段,编辑抽屉传真实值而非 false M1: 补充 updateUser_selfAdminKeepType_doesNotThrow 测试
-
- usr.ts 追加 UserUpdateReq/Resp + updateUser() - UserFormDrawer 支持 userId/initialData 编辑模式 - UserListPage 追加操作列 + editingUser 状态 - 测试覆盖编辑抽屉开启与 updateUser 调用
-
REQ-USR-002
-
REQ-USR-002
-
REQ-USR-002
-
REQ-USR-003
-
- docs/04 § 3.2 分页约定 pageNum → page,与 docs/05 及实现保持一致 REQ-USR-003
-
- docs/05: 全局分页约定 pageNum → page,与实现保持一致 REQ-USR-003
-
- EMPLOYEE_NOT_FOUND 值恢复为规格文档规定的 40001
-
- getPermissionGroups 增加 brandId 多租户过滤 - EMPLOYEE_NOT_FOUND = 40401 常量替换魔法数字 40001 - 权限组绑定改为批量 insert(Collection) 消除 N+1
-
- UserPrincipal record + JwtAuthenticationFilter 注入用户上下文 - SecurityConfig 补充 authenticationEntryPoint 返回 401 - UserService/UserServiceImpl: 创建用户、获取员工列表、获取权限组 - UserController: POST /users、GET /users/staffs、GET /users/permission-groups - UserServiceTest (6 cases) + UserControllerTest (5 cases) 全部通过
-
- Copy V2 migration to backend/src/main/resources/db/migration/ for Flyway classpath - Update review report to round 2 approve - Mark REQ-USR-004 done in docs/08
-
1. V2 migration: uk_usr_user_username 改为 (sUsername, sBrandsId) 复合唯一 2. AuthServiceImpl: UpdateWrapper 换 LambdaUpdateWrapper(一致性) 3. AuthServiceImpl.refresh(): 追加 tLockUntil 检查,防绕过锁定 4. AuthServiceTest: 新增 refresh_lockedUser_throws40103 5. pom.xml: Lombok 1.18.36 适配 Java 25,surefire ByteBuddy 实验模式 6. .mvn/jvm.config + scripts/test.sh: Java 21 编译兼容性修复
-
Tasks 8-10: authSlice setCredentials/clearCredentials, LoginPage 品牌选择 + 登录表单, 4/4 Vitest 测试通过(authSlice.test.ts + LoginPage.test.tsx)
-
- SecurityConfig: STATELESS, permitAll /api/auth/**, JWT filter - JwtAuthenticationFilter: Bearer token → SecurityContext - AuthController: POST /login, POST /refresh, GET /brands - BrandVO: @JsonProperty to fix Jackson serialization of sNo/sName - AuthControllerTest: 4/4 PASS; all 22 backend tests GREEN
-
- LoginReqDTO/RefreshTokenReqDTO/LoginVO/BrandVO DTO/VO - AuthService interface: login/refresh/getBrands - AuthServiceImpl: multi-tenant brand query, BCrypt, disabled/lock check, fail count (5x → lock 30min), success reset; refresh token validate + re-issue; getBrands ORDER BY sName - UpdateWrapper (string columns) avoids LambdaWrapper unit test issue - BeanConfig: @Bean BCryptPasswordEncoder - AuthServiceTest: 10/10 PASS (7 login + 3 refresh/brands)
-
- BrandEntity/UsrUserEntity: @TableName + @TableField (map-underscore-to-camel-case=false) - BrandMapper/UsrUserMapper: extends BaseMapper - MyBatisPlusConfig: @MapperScan + PaginationInnerInterceptor - BrandMapperTest: insert/query/delete against test DB PASS