Commit Graph

13 Commits

Author SHA1 Message Date
wh
49666d1579 feat(phase7): US6 训练数据导出与 GLM 微调提交模块
- ExportBatch 实体 + ExportBatchMapper(updateFinetuneInfo)
- ExportService:createBatch(JSONL生成+RustFS上传+批量更新)、listSamples、listBatches
  - 双重校验:sampleIds非空(EMPTY_SAMPLES 400)、全部APPROVED(INVALID_SAMPLES 400)
- FinetuneService:trigger(提交GLM微调)、getStatus(实时查询)
  - AI调用不在@Transactional内,仅DB写入部分受事务保护
- ExportController:5个端点全部@RequiresRoles("ADMIN")
- 集成测试:权限403、空列表400、非APPROVED样本400、已审批样本查询200
2026-04-09 15:43:45 +08:00
wh
6d972511ff feat(phase6): US5 QA 问答生成阶段标注与审批模块
- QaService:getResult/updateResult/submit/approve/reject 五大方法
  - approve() 单事务内完成:training_dataset→APPROVED + task→APPROVED + source_data→APPROVED
  - reject() 清除候选问答对(deleteByTaskId),source_data 保持 QA_REVIEW 状态
  - 与 ExtractionService 同款自审校验(SELF_REVIEW_FORBIDDEN 403)
- QaController:5 个端点 /api/qa/{taskId} 系列,ANNOTATOR/REVIEWER 权限分离
- 集成测试 QaApprovalIntegrationTest:
  - 审批通过验证整条流水线终态(training_dataset+source_data 均为 APPROVED)
  - 驳回验证候选记录清除 + 重领再提交全流程
2026-04-09 15:39:28 +08:00
wh
927e4f1cf3 feat(phase5): US3+US4 任务领取、提取标注与审批模块
- 任务领取(TaskClaimService):Redis SET NX + DB WHERE status=UNCLAIMED 双重并发防护
- 任务管理(TaskService/TaskController):任务池/我的任务/待审批/全部任务/创建/指派 10 端点
- 提取标注(ExtractionService/ExtractionController):AI 预标注/更新/提交/审批/驳回 5 端点
- 审批解耦(ExtractionApprovedEventListener):@TransactionalEventListener(AFTER_COMMIT) + REQUIRES_NEW
  确保 AI QA 生成在审批事务提交后独立执行,异常不回滚审批结果
- 状态实体:AnnotationTask/AnnotationTaskHistory/AnnotationResult/TrainingDataset
- 集成测试:并发领取安全(10 线程恰好 1 成功)+ 审批流(通过/自审/驳回重领)
2026-04-09 15:36:11 +08:00
wh
7f12fc520a Phase 4 完成:US2 原始资料上传(SourceData / SourceService / SourceController)
新增:
- SourceData 实体 + SourceDataMapper(含 updateStatus 方法)
- SourceResponse DTO(上传/列表/详情复用)
- SourceService(upload/list/findById/delete,upload 先 INSERT 获取 ID
  再构造 RustFS 路径,delete 仅允许 PENDING 状态)
- SourceController(POST /api/source/upload 返回 201,GET /list,
  GET /{id},DELETE /{id};@RequiresRoles 声明权限)
- SourceIntegrationTest(权限校验、空列表、删除不存在资料、
  已进入流水线资料删除返回 409)
- application.yml 添加 token.ttl-seconds 配置项
2026-04-09 15:21:32 +08:00
wh
a28fecd16a Phase 2/3 完成:修复 Shiro javax/jakarta 兼容性,实现 US1 认证模块
修复:
- TokenFilter 改继承 OncePerRequestFilter(jakarta.servlet),
  移除 PathMatchingFilter(javax.servlet)依赖,解决 Lombok 级联失败
- ShiroConfig 用 FilterRegistrationBean 替代 ShiroFilterFactoryBean,
  避免 javax/jakarta Filter 类型不兼容;securityManager 调用
  SecurityUtils.setSecurityManager() 确保 @RequiresRoles AOP 可用
- LabelBackendApplication 排除 ShiroWeb 自动配置(WebAutoConfiguration、
  WebFilterConfiguration、WebMvcAutoConfiguration)
- SysUserMapper @InterceptorIgnore 修正为 mybatis-plus 包路径

新增(Phase 2 尾声):
- SysCompany / SysCompanyMapper
- SysUser / SysUserMapper
- ShiroFilterIntegrationTest(无 Token→401、过期→401、角色不足→403、满足→200)

新增(Phase 3 / US1):
- LoginRequest / LoginResponse / UserInfoResponse DTO
- AuthService(login + logout + me;BCrypt 校验;Redis Hash 存 Token)
- AuthController(POST /api/auth/login、POST /logout、GET /me)
- AuthIntegrationTest(正确密码→token、错误密码→401、退出后→401)
2026-04-09 15:16:49 +08:00
wh
0cd99aa22c On branch 001-label-backend-spec
Changes to be committed:
	new file:   src/main/java/com/label/common/shiro/BearerToken.java
	new file:   src/main/java/com/label/common/shiro/ShiroConfig.java
	new file:   src/main/java/com/label/common/shiro/TokenFilter.java
	new file:   src/main/java/com/label/common/shiro/TokenPrincipal.java
	new file:   src/main/java/com/label/common/shiro/UserRealm.java
	modified:   src/main/java/com/label/common/statemachine/DatasetStatus.java
	new file:   src/test/java/com/label/AbstractIntegrationTest.java
	new file:   src/test/java/com/label/unit/StateMachineTest.java
	new file:   src/test/resources/db/init.sql
2026-04-09 13:54:35 +08:00
wh
556f7b9672 feat(common): 添加 MybatisPlusConfig/StateValidator,修复 jsqlparser 依赖 (T010/T011)
- MybatisPlusConfig: TenantLineInnerInterceptor + PaginationInnerInterceptor
- StateValidator: 通用状态机校验,失败抛出 INVALID_STATE_TRANSITION
- pom.xml: 新增 mybatis-plus-jsqlparser 3.5.9(3.5.7+ 必须显式引入)
2026-04-09 13:31:14 +08:00
wh
8fb730d281 feat(common): 添加 @OperationLog 注解和 AuditAspect (T016/T017) 2026-04-09 13:28:38 +08:00
wh
3d1790ad64 feat(common): 添加 RedisKeyManager/RedisService/RedisConfig (T009) 2026-04-09 13:27:47 +08:00
wh
52d5dd9c24 feat(common): 添加 BusinessException/GlobalExceptionHandler/CompanyContext/状态枚举 (T007/T008/T012-T015) 2026-04-09 13:21:06 +08:00
wh
94cb27e95f feat(common): 添加 RustFsClient 和 AiServiceClient (T018/T019) 2026-04-09 13:16:53 +08:00
wh
0e2b1e291b feat(common): 添加统一响应格式 Result/ResultCode/PageResult (T006) 2026-04-09 13:16:31 +08:00
wh
3b99b1d8c3 feat(init): 创建 Maven 项目骨架 (T001) 2026-04-09 13:00:30 +08:00