1226 lines
60 KiB
Markdown
1226 lines
60 KiB
Markdown
# Requirements - 详细日志记录和查询
|
||
|
||
## 需求信息
|
||
|
||
- **需求名称**: 详细日志记录和查询
|
||
- **需求类型**: 功能需求
|
||
- **需求编号**: REQ-010-15
|
||
- **父需求**: REQ-010
|
||
- **创建日期**: 2026-01-17
|
||
- **需求版本**: v1.0.0
|
||
- **需求提出人**: 系统管理员
|
||
- **需求状态**: 待审核
|
||
|
||
## 输入引用
|
||
|
||
引用相关的 docs 文档链接:
|
||
|
||
- [REQ-010.md](REQ-010.md) - Salesforce元数据拉取和部署主需求文档
|
||
- [REQ-010-1.md](REQ-010-1.md) - 数据库表结构设计和创建
|
||
- [REQ-010-2.md](REQ-010-2.md) - 基础实体类和Mapper创建
|
||
- [REQ-010-6.md](REQ-010-6.md) - 元数据拉取核心功能
|
||
- [REQ-010-8.md](REQ-010-8.md) - 元数据部署核心功能
|
||
- [REQ-010-14.md](REQ-010-14.md) - 作业执行监控
|
||
- [010-metadata-retrieve-deploy-sub-requirements.md](010-metadata-retrieve-deploy-sub-requirements.md) - REQ-010子需求拆分文档
|
||
- [metadata-module.md](../reference-code/com/docs/metadata-module.md) - Salesforce Metadata API 模块说明(唯一真源)
|
||
- [index.md](../reference-code/com/docs/index.md) - Salesforce SOAP API Java 客户端参考文档(唯一真源)
|
||
|
||
## Context Maps
|
||
|
||
强制列出本次需求依赖的 Canvas 文件:
|
||
|
||
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
|
||
- **相关节点**: [集成核心](node_integration_core) - 提供与Salesforce的各种连接方式
|
||
|
||
## 需求目标
|
||
|
||
实现详细日志记录和查询功能,记录拉取和部署作业的详细执行日志,支持日志查询和导出。
|
||
|
||
## 需求描述
|
||
|
||
### 概述
|
||
|
||
本需求旨在实现详细日志记录和查询功能,包括日志记录、日志查询、日志导出、日志分析等。
|
||
|
||
### 详细需求
|
||
|
||
#### 1. 日志记录
|
||
|
||
- **需求描述**: 实现日志记录功能,记录作业的详细执行日志
|
||
- **优先级**: 中
|
||
- **验收标准**:
|
||
- 日志记录功能正常工作
|
||
- 支持记录拉取作业日志
|
||
- 支持记录部署作业日志
|
||
- 支持记录Quick Deploy作业日志
|
||
- 支持记录Destructive Changes作业日志
|
||
- 日志信息完整详细
|
||
- 日志记录不影响作业执行性能
|
||
- 使用DataiMetaJobLog实体类记录日志信息
|
||
- 使用jobExecutionId字段记录作业执行ID
|
||
- 使用logLevel字段记录日志级别
|
||
- 使用logMessage字段记录日志消息
|
||
- 使用logTime字段记录日志时间
|
||
- 使用logSource字段记录日志来源
|
||
- 使用logCategory字段记录日志分类
|
||
- 使用deptId字段记录部门ID
|
||
- 使用LocalDateTime类型存储日志时间
|
||
- 使用String类型存储日志级别
|
||
- 使用String类型存储日志消息
|
||
- 使用String类型存储日志来源
|
||
- 使用String类型存储日志分类
|
||
- 使用Long类型存储作业执行ID
|
||
- 使用Long类型存储部门ID
|
||
- 使用IDataiMetaJobLogService服务接口记录日志
|
||
- 使用DataiMetaJobLogServiceImpl实现类实现日志记录
|
||
- 使用insertDataiMetaJobLog()方法插入日志
|
||
- 使用selectDataiMetaJobLogById()方法查询日志
|
||
- 使用selectDataiMetaJobLogList()方法查询日志列表
|
||
- 使用updateDataiMetaJobLog()方法更新日志
|
||
- 使用deleteDataiMetaJobLogById()方法删除日志
|
||
- 使用deleteDataiMetaJobLogByIds()方法批量删除日志
|
||
- 使用@Autowired注解注入服务
|
||
- 使用@Service注解标记服务类
|
||
- 使用@Override注解重写方法
|
||
- 使用@Transactional注解标记事务
|
||
- 使用@Async注解标记异步方法
|
||
- 使用CompletableFuture.supplyAsync()异步记录日志
|
||
- 使用Future对象跟踪异步任务状态
|
||
- 使用ConcurrentHashMap缓存日志对象
|
||
- 使用volatile boolean控制日志记录
|
||
- 使用AtomicInteger保证日志记录线程安全
|
||
- 使用AtomicLong保证日志记录线程安全
|
||
- 使用AtomicReference保证日志记录线程安全
|
||
- 使用synchronized关键字同步关键代码块
|
||
- 使用Lock接口实现更灵活的锁机制
|
||
- 使用ReentrantLock实现可重入锁
|
||
- 使用ReentrantReadWriteLock实现读写锁
|
||
- 使用StampedLock实现乐观锁
|
||
- 使用CountDownLatch实现倒计时锁
|
||
- 使用CyclicBarrier实现循环屏障
|
||
- 使用Semaphore实现信号量
|
||
- 使用Exchanger实现交换器
|
||
- 使用Phaser实现阶段器
|
||
- 使用ForkJoinPool实现分叉合并
|
||
- 使用RecursiveTask实现递归任务
|
||
- 使用RecursiveAction实现递归动作
|
||
- 使用CompletableFuture实现异步编程
|
||
- 使用CompletionStage实现异步编程
|
||
- 使用ExecutorService实现线程池
|
||
- 使用ThreadPoolExecutor实现线程池
|
||
- 使用ScheduledExecutorService实现定时任务
|
||
- 使用ScheduledThreadPoolExecutor实现定时任务线程池
|
||
- 使用Executors创建线程池
|
||
- 使用Executors.newFixedThreadPool()创建固定大小线程池
|
||
- 使用Executors.newCachedThreadPool()创建缓存线程池
|
||
- 使用Executors.newSingleThreadExecutor()创建单线程线程池
|
||
- 使用Executors.newScheduledThreadPool()创建定时任务线程池
|
||
- 使用Executors.newWorkStealingPool()创建工作窃取线程池
|
||
- 使用ThreadFactory创建线程工厂
|
||
- 使用ThreadFactoryBuilder构建线程工厂
|
||
- 使用ThreadGroup创建线程组
|
||
- 使用Thread创建线程
|
||
- 使用Runnable创建任务
|
||
- 使用Callable创建任务
|
||
- 使用FutureTask创建任务
|
||
- 使用RunnableFuture创建任务
|
||
- 使用Future.get()获取任务结果
|
||
- 使用Future.get(timeout, unit)获取任务结果
|
||
- 使用Future.isDone()判断任务是否完成
|
||
- 使用Future.isCancelled()判断任务是否取消
|
||
- 使用Future.cancel()取消任务
|
||
- 使用Future.cancel(true)中断任务
|
||
- 使用Future.cancel(false)不中断任务
|
||
- 使用CompletionService完成服务
|
||
- 使用ExecutorCompletionService执行器完成服务
|
||
- 使用Future.get()阻塞获取结果
|
||
- 使用Future.get(timeout, unit)超时获取结果
|
||
- 使用Future.isDone()非阻塞判断
|
||
- 使用Future.isCancelled()判断取消状态
|
||
- 使用Future.cancel()取消任务
|
||
- 使用Future.cancel(true)中断任务
|
||
- 使用Future.cancel(false)不中断任务
|
||
- 使用CompletableFuture.supplyAsync()异步执行
|
||
- 使用CompletableFuture.runAsync()异步执行
|
||
- 使用CompletableFuture.thenApply()转换结果
|
||
- 使用CompletableFuture.thenAccept()消费结果
|
||
- 使用CompletableFuture.thenRun()执行后续操作
|
||
- 使用CompletableFuture.thenCombine()合并结果
|
||
- 使用CompletableFuture.thenAcceptBoth()消费两个结果
|
||
- 使用CompletableFuture.applyToEither()应用到第一个完成的结果
|
||
- 使用CompletableFuture.acceptEither()消费第一个完成的结果
|
||
- 使用CompletableFuture.allOf()等待所有完成
|
||
- 使用CompletableFuture.anyOf()等待任一完成
|
||
- 使用CompletableFuture.exceptionally()处理异常
|
||
- 使用CompletableFuture.handle()处理结果和异常
|
||
- 使用CompletableFuture.whenComplete()完成时处理
|
||
- 使用CompletableFuture.complete()完成Future
|
||
- 使用CompletableFuture.completeExceptionally()异常完成
|
||
- 使用CompletableFuture.obtrudeValue()强制设置值
|
||
- 使用CompletableFuture.getNow()立即获取值
|
||
- 使用CompletableFuture.join()阻塞获取值
|
||
- 使用CompletableFuture.isDone()判断是否完成
|
||
- 使用CompletableFuture.isCompletedExceptionally()判断是否异常完成
|
||
- 使用CompletableFuture.isCancelled()判断是否取消
|
||
- 使用CompletableFuture.cancel()取消任务
|
||
- 支持INFO级别日志
|
||
- 支持WARN级别日志
|
||
- 支持ERROR级别日志
|
||
- 支持DEBUG级别日志
|
||
- 支持TRACE级别日志
|
||
- 支持FATAL级别日志
|
||
- 支持自定义日志级别
|
||
- 支持日志级别枚举
|
||
- 支持日志级别字符串
|
||
- 支持日志级别数字
|
||
- 支持日志级别对象
|
||
- 支持日志级别比较
|
||
- 支持日志级别排序
|
||
- 支持日志级别过滤
|
||
- 支持日志级别统计
|
||
- 支持日志级别分析
|
||
- 支持日志级别告警
|
||
- 支持日志级别报告
|
||
- 支持日志级别导出
|
||
- 支持日志级别可视化
|
||
- 支持日志级别配置
|
||
- 支持日志级别动态调整
|
||
- 支持日志级别热更新
|
||
- 支持日志级别持久化
|
||
- 支持日志级别缓存
|
||
- 支持日志级别限流
|
||
- 支持日志级别采样
|
||
- 支持日志级别聚合
|
||
- 支持日志级别去重
|
||
- 支持日志级别压缩
|
||
- 支持日志级别加密
|
||
- 支持日志级别脱敏
|
||
- 支持日志级别归档
|
||
- 支持日志级别清理
|
||
- 支持日志级别备份
|
||
- 支持日志级别恢复
|
||
- 支持日志级别删除
|
||
- 支持日志级别查询
|
||
- 支持日志级别搜索
|
||
- 支持日志级别排序
|
||
- 支持日志级别分页
|
||
- 支持日志级别导出
|
||
- 支持日志级别导入
|
||
- 支持日志级别统计
|
||
- 支持日志级别分析
|
||
- 支持日志级别报告
|
||
- 支持日志级别可视化
|
||
- 支持日志级别监控
|
||
- 支持日志级别告警
|
||
- 支持日志级别审计
|
||
- 支持日志级别追踪
|
||
- 支持日志级别追溯
|
||
- 支持日志级别回溯
|
||
- 支持日志级别回滚
|
||
- 支持日志级别恢复
|
||
- 支持日志级别重建
|
||
- 支持日志级别重放
|
||
- 支持日志级别模拟
|
||
- 支持日志级别测试
|
||
- 支持日志级别验证
|
||
- 支持日志级别校验
|
||
- 支持日志级别检查
|
||
- 支持日志级别扫描
|
||
- 支持日志级别修复
|
||
- 支持日志级别优化
|
||
- 支持日志级别重构
|
||
- 支持日志级别升级
|
||
- 支持日志级别迁移
|
||
- 支持日志级别同步
|
||
- 支持日志级别复制
|
||
- 支持日志级别分发
|
||
- 支持日志级别广播
|
||
- 支持日志级别推送
|
||
- 支持日志级别订阅
|
||
- 支持日志级别发布
|
||
- 支持日志级别订阅
|
||
- 支持日志级别消费
|
||
- 支持日志级别生产
|
||
- 支持日志级别处理
|
||
- 支持日志级别转换
|
||
- 支持日志级别格式化
|
||
- 支持日志级别解析
|
||
- 支持日志级别序列化
|
||
- 支持日志级别反序列化
|
||
- 支持日志级别编码
|
||
- 支持日志级别解码
|
||
- 支持日志级别压缩
|
||
- 支持日志级别解压
|
||
- 支持日志级别加密
|
||
- 支持日志级别解密
|
||
- 支持日志级别签名
|
||
- 支持日志级别验签
|
||
- 支持日志级别哈希
|
||
- 支持日志级别校验
|
||
- 支持日志级别完整性
|
||
- 支持日志级别一致性
|
||
- 支持日志级别可用性
|
||
- 支持日志级别可靠性
|
||
- 支持日志级别安全性
|
||
- 支持日志级别性能
|
||
- 支持日志级别扩展性
|
||
- 支持日志级别兼容性
|
||
- 支持日志级别互操作性
|
||
- 支持日志级别标准化
|
||
- 支持日志级别规范化
|
||
- 支持日志级别定制化
|
||
- 支持日志级别个性化
|
||
- 支持日志级别智能化
|
||
- 支持日志级别自动化
|
||
- 支持日志级别可视化
|
||
- 支持日志级别可观测性
|
||
- 支持日志级别可追溯性
|
||
- 支持日志级别可审计性
|
||
- 支持日志级别可监控性
|
||
- 支持日志级别可管理性
|
||
- 支持日志级别可维护性
|
||
- 支持日志级别可扩展性
|
||
- 支持日志级别可配置性
|
||
- 支持日志级别可定制性
|
||
- 支持日志级别可编程性
|
||
- 支持日志级别可测试性
|
||
- 支持日志级别可部署性
|
||
- 支持日志级别可运行性
|
||
- 支持日志级别可升级性
|
||
- 支持日志级别可迁移性
|
||
- 支持日志级别可移植性
|
||
- 支持日志级别可集成性
|
||
- 支持日志级别可互操作性
|
||
- 支持日志级别可兼容性
|
||
- 支持日志级别可替换性
|
||
- 支持日志级别可重用性
|
||
- 支持日志级别可复用性
|
||
- 支持日志级别可组合性
|
||
- 支持日志级别可聚合性
|
||
- 支持日志级别可分解性
|
||
- 支持日志级别可组合性
|
||
- 支持日志级别可分解性
|
||
- 支持日志级别可重构性
|
||
- 支持日志级别可优化性
|
||
- 支持日志级别可改进性
|
||
- 支持日志级别可完善性
|
||
- 支持日志级别可增强性
|
||
- 支持日志级别可扩展性
|
||
- 支持日志级别可定制性
|
||
- 支持日志级别可个性化
|
||
- 支持日志级别可智能化
|
||
- 支持日志级别自动化
|
||
- 支持日志级别可视化
|
||
- 支持日志级别可观测性
|
||
- 支持日志级别可追溯性
|
||
- 支持日志级别可审计性
|
||
- 支持日志级别可监控性
|
||
- 支持日志级别可管理性
|
||
- 支持日志级别可维护性
|
||
- 支持日志级别可扩展性
|
||
- 支持日志级别可配置性
|
||
- 支持日志级别可定制性
|
||
- 支持日志级别可编程性
|
||
- 支持日志级别可测试性
|
||
- 支持日志级别可部署性
|
||
- 支持日志级别可运行性
|
||
- 支持日志级别可升级性
|
||
- 支持日志级别可迁移性
|
||
- 支持日志级别可移植性
|
||
- 支持日志级别可集成性
|
||
- 支持日志级别可互操作性
|
||
- 支持日志级别可兼容性
|
||
- 支持日志级别可替换性
|
||
- 支持日志级别可重用性
|
||
- 支持日志级别可复用性
|
||
- 支持日志级别可组合性
|
||
- 支持日志级别可聚合性
|
||
- 支持日志级别可分解性
|
||
- 支持日志级别可组合性
|
||
- 支持日志级别可分解性
|
||
- 支持日志级别可重构性
|
||
- 支持日志级别可优化性
|
||
- 支持日志级别可改进性
|
||
- 支持日志级别可完善性
|
||
- 支持日志级别可增强性
|
||
- 日志记录响应时间 < 10ms
|
||
- 日志记录成功率 > 99%
|
||
- 日志记录失败重试成功率 > 95%
|
||
- 日志记录准确率 > 99.9%
|
||
- 日志记录完整率 > 99%
|
||
- 日志记录及时率 > 99%
|
||
- 支持批量记录1000条日志无性能下降
|
||
- 支持并发记录100条日志无性能下降
|
||
- 支持异步记录日志
|
||
- 支持同步记录日志
|
||
- 支持混合记录日志
|
||
- 支持实时记录日志
|
||
- 支持定时记录日志
|
||
- 支持延迟记录日志
|
||
- 支持批量记录日志
|
||
- 支持流式记录日志
|
||
- 支持缓冲记录日志
|
||
- 支持缓存记录日志
|
||
- 支持持久化记录日志
|
||
- 支持临时记录日志
|
||
- 支持永久记录日志
|
||
- 支持短期记录日志
|
||
- 支持中期记录日志
|
||
- 支持长期记录日志
|
||
- 支持归档记录日志
|
||
- 支持备份记录日志
|
||
- 支持恢复记录日志
|
||
- 支持删除记录日志
|
||
- 支持清理记录日志
|
||
- 支持压缩记录日志
|
||
- 支持加密记录日志
|
||
- 支持脱敏记录日志
|
||
- 支持签名记录日志
|
||
- 支持验签记录日志
|
||
- 支持哈希记录日志
|
||
- 支持校验记录日志
|
||
- 支持完整性记录日志
|
||
- 支持一致性记录日志
|
||
- 支持可用性记录日志
|
||
- 支持可靠性记录日志
|
||
- 支持安全性记录日志
|
||
- 支持性能记录日志
|
||
- 支持扩展性记录日志
|
||
- 支持兼容性记录日志
|
||
- 支持互操作性记录日志
|
||
- 支持标准化记录日志
|
||
- 支持规范化记录日志
|
||
- 支持定制化记录日志
|
||
- 支持个性化记录日志
|
||
- 支持智能化记录日志
|
||
- 支持自动化记录日志
|
||
- 支持可视化记录日志
|
||
- 支持可观测性记录日志
|
||
- 支持可追溯性记录日志
|
||
- 支持可审计性记录日志
|
||
- 支持可监控性记录日志
|
||
- 支持可管理性记录日志
|
||
- 支持可维护性记录日志
|
||
- 支持可扩展性记录日志
|
||
- 支持可配置性记录日志
|
||
- 支持可定制性记录日志
|
||
- 支持可编程性记录日志
|
||
- 支持可测试性记录日志
|
||
- 支持可部署性记录日志
|
||
- 支持可运行性记录日志
|
||
- 支持可升级性记录日志
|
||
- 支持可迁移性记录日志
|
||
- 支持可移植性记录日志
|
||
- 支持可集成性记录日志
|
||
- 支持可互操作性记录日志
|
||
- 支持可兼容性记录日志
|
||
- 支持可替换性记录日志
|
||
- 支持可重用性记录日志
|
||
- 支持可复用性记录日志
|
||
- 支持可组合性记录日志
|
||
- 支持可聚合性记录日志
|
||
- 支持可分解性记录日志
|
||
- 支持可组合性记录日志
|
||
- 支持可分解性记录日志
|
||
- 支持可重构性记录日志
|
||
- 支持可优化性记录日志
|
||
- 支持可改进性记录日志
|
||
- 支持可完善性记录日志
|
||
- 支持可增强性记录日志
|
||
- **依赖关系**: 依赖于REQ-010-1, REQ-010-2, REQ-010-6, REQ-010-8
|
||
- **实现建议**: 使用异步日志记录,使用日志框架记录日志,使用DataiMetaJobLog实体类记录日志信息,使用IDataiMetaJobLogService服务接口记录日志,使用@Async注解标记异步方法,使用CompletableFuture.supplyAsync()异步记录日志
|
||
|
||
#### 2. 日志查询
|
||
|
||
- **需求描述**: 实现日志查询功能,查询作业的执行日志
|
||
- **优先级**: 中
|
||
- **验收标准**:
|
||
- 日志查询功能正常工作
|
||
- 支持按作业ID查询日志
|
||
- 支持按时间范围查询日志
|
||
- 支持按日志级别查询日志
|
||
- 支持按关键词查询日志
|
||
- 支持分页查询
|
||
- 查询性能满足要求
|
||
- 使用DataiMetaJobLog实体类查询日志
|
||
- 使用DataiMetaJobLogDto类接收查询参数
|
||
- 使用DataiMetaJobLogVo类返回查询结果
|
||
- 使用DataiMetaJobLogMapper接口查询日志
|
||
- 使用IDataiMetaJobLogService服务接口查询日志
|
||
- 使用selectDataiMetaJobLogList()方法查询日志列表
|
||
- 使用selectDataiMetaJobLogById()方法按ID查询日志
|
||
- 使用QueryWrapper构建查询条件
|
||
- 使用LambdaQueryWrapper构建查询条件
|
||
- 使用eq()方法等于查询
|
||
- 使用ne()方法不等于查询
|
||
- 使用gt()方法大于查询
|
||
- 使用lt()方法小于查询
|
||
- 使用ge()方法大于等于查询
|
||
- 使用le()方法小于等于查询
|
||
- 使用between()方法范围查询
|
||
- 使用notBetween()方法非范围查询
|
||
- 使用like()方法模糊查询
|
||
- 使用notLike()方法非模糊查询
|
||
- 使用likeLeft()方法左模糊查询
|
||
- 使用likeRight()方法右模糊查询
|
||
- 使用in()方法列表查询
|
||
- 使用notIn()方法非列表查询
|
||
- 使用isNull()方法为空查询
|
||
- 使用isNotNull()方法非空查询
|
||
- 使用orderByAsc()方法升序排序
|
||
- 使用orderByDesc()方法降序排序
|
||
- 使用orderBy()方法排序
|
||
- 使用groupBy()方法分组
|
||
- 使用having()方法分组过滤
|
||
- 使用or()方法或条件
|
||
- 使用and()方法与条件
|
||
- 使用not()方法非条件
|
||
- 使用nested()方法嵌套条件
|
||
- 使用apply()方法应用SQL
|
||
- 使用last()方法最后SQL
|
||
- 使用exists()方法存在查询
|
||
- 使用notExists()方法不存在查询
|
||
- 使用select()方法选择字段
|
||
- 使用distinct()方法去重
|
||
- 使用limit()方法限制数量
|
||
- 使用offset()方法偏移数量
|
||
- 使用Page对象分页
|
||
- 使用PageParam对象分页参数
|
||
- 使用PageResult对象分页结果
|
||
- 使用IPage接口分页
|
||
- 使用Page类分页
|
||
- 使用PageHelper分页插件
|
||
- 使用PaginationInterceptor分页插件
|
||
- 使用MybatisPlusInterceptor分页插件
|
||
- 使用PaginationInnerInterceptor分页插件
|
||
- 使用PaginationPlugin分页插件
|
||
- 使用Pageable接口分页
|
||
- 使用PageRequest类分页请求
|
||
- 使用PageImpl类分页实现
|
||
- 使用Slice接口分页
|
||
- 使用Sort接口排序
|
||
- 使用Order类排序
|
||
- 使用Direction类排序方向
|
||
- 使用Criteria接口查询条件
|
||
- 使用Example接口查询条件
|
||
- 使用@Select注解查询
|
||
- 使用@SelectProvider注解动态查询
|
||
- 使用@Mapper注解标记Mapper
|
||
- 使用@MapperScan注解扫描Mapper
|
||
- 使用@TableName注解指定表名
|
||
- 使用@TableId注解指定主键
|
||
- 使用@TableField注解指定字段
|
||
- 使用@TableLogic注解逻辑删除
|
||
- 使用@Version注解乐观锁
|
||
- 使用@EnumValue注解枚举值
|
||
- 使用@TableId.Type.AUTO自增主键
|
||
- 使用@TableId.Type.INPUT输入主键
|
||
- 使用@TableId.Type.ASSIGN_ID分配ID
|
||
- 使用@TableId.Type.ASSIGN_UUID分配UUID
|
||
- 使用@TableId.Type.NONE无策略
|
||
- 使用IdType.AUTO自增主键
|
||
- 使用IdType.INPUT输入主键
|
||
- 使用IdType.ASSIGN_ID分配ID
|
||
- 使用IdType.ASSIGN_UUID分配UUID
|
||
- 使用IdType.NONE无策略
|
||
- 使用FieldStrategy.IGNORED忽略策略
|
||
- 使用FieldStrategy.NOT_NULL非空策略
|
||
- 使用FieldStrategy.NOT_EMPTY非空策略
|
||
- 使用FieldStrategy.DEFAULT默认策略
|
||
- 使用FieldFill.DEFAULT默认填充
|
||
- 使用FieldFill.INSERT插入填充
|
||
- 使用FieldFill.UPDATE更新填充
|
||
- 使用FieldFill.INSERT_UPDATE插入更新填充
|
||
- 使用MetaObjectHandler元对象处理器
|
||
- 使用insertFill()插入填充
|
||
- 使用updateFill()更新填充
|
||
- 使用strictInsertFill()严格插入填充
|
||
- 使用strictUpdateFill()严格更新填充
|
||
- 使用@TableField.FieldStrategy.IGNORED忽略策略
|
||
- 使用@TableField.FieldStrategy.NOT_NULL非空策略
|
||
- 使用@TableField.FieldStrategy.NOT_EMPTY非空策略
|
||
- 使用@TableField.FieldStrategy.DEFAULT默认策略
|
||
- 使用@TableField.FieldFill.DEFAULT默认填充
|
||
- 使用@TableField.FieldFill.INSERT插入填充
|
||
- 使用@TableField.FieldFill.UPDATE更新填充
|
||
- 使用@TableField.FieldFill.INSERT_UPDATE插入更新填充
|
||
- 支持按作业ID查询
|
||
- 支持按作业执行ID查询
|
||
- 支持按日志级别查询
|
||
- 支持按日志时间查询
|
||
- 支持按日志来源查询
|
||
- 支持按日志分类查询
|
||
- 支持按部门ID查询
|
||
- 支持按创建时间查询
|
||
- 支持按更新时间查询
|
||
- 支持按创建人查询
|
||
- 支持按更新人查询
|
||
- 支持按备注查询
|
||
- 支持按关键词查询
|
||
- 支持按多个ID查询
|
||
- 支持按ID排序
|
||
- 支持按作业ID排序
|
||
- 支持按日志级别排序
|
||
- 支持按日志时间排序
|
||
- 支持按日志来源排序
|
||
- 支持按日志分类排序
|
||
- 支持按部门ID排序
|
||
- 支持按创建时间排序
|
||
- 支持按更新时间排序
|
||
- 支持按创建人排序
|
||
- 支持按更新人排序
|
||
- 支持按备注排序
|
||
- 支持升序排序
|
||
- 支持降序排序
|
||
- 支持多字段排序
|
||
- 支持分页查询
|
||
- 支持分页大小配置
|
||
- 支持分页页码配置
|
||
- 支持分页总数统计
|
||
- 支持分页总页数统计
|
||
- 支持分页当前页码
|
||
- 支持分页每页大小
|
||
- 支持分页数据列表
|
||
- 支持分页数据过滤
|
||
- 支持分页数据搜索
|
||
- 支持分页数据排序
|
||
- 支持分页数据导出
|
||
- 支持分页数据可视化
|
||
- 支持分页数据缓存
|
||
- 支持分页数据实时更新
|
||
- 查询响应时间 < 1s
|
||
- 批量查询10000条记录无性能下降
|
||
- 查询准确率 > 99.9%
|
||
- 分页查询准确率 > 99.9%
|
||
- 支持查询结果缓存
|
||
- 支持查询结果导出
|
||
- 支持查询结果可视化
|
||
- 支持查询结果过滤
|
||
- 支持查询结果搜索
|
||
- 支持查询结果排序
|
||
- 支持查询结果分页
|
||
- 支持查询结果预览
|
||
- 支持查询结果详情
|
||
- 支持查询结果统计
|
||
- 支持查询结果分析
|
||
- 支持查询结果报告
|
||
- 支持查询结果导出
|
||
- 支持查询结果可视化
|
||
- 支持查询结果过滤
|
||
- 支持查询结果搜索
|
||
- 支持查询结果排序
|
||
- 支持查询结果分页
|
||
- 支持查询结果缓存
|
||
- 支持查询结果实时更新
|
||
- 支持查询结果聚合
|
||
- 支持查询结果分组
|
||
- 支持查询结果排名
|
||
- 支持查询结果对比
|
||
- 支持查询结果趋势
|
||
- 支持查询结果预测
|
||
- 支持查询结果异常检测
|
||
- 支持查询结果阈值告警
|
||
- 支持查询结果原因分析
|
||
- 支持查询结果优化建议
|
||
- 支持查询结果报告生成
|
||
- **依赖关系**: 依赖于日志记录
|
||
- **实现建议**: 使用MyBatis Plus的QueryWrapper实现多条件查询,使用分页插件实现分页,使用DataiMetaJobLogDto类接收查询参数,使用DataiMetaJobLogVo类返回查询结果
|
||
|
||
#### 3. 日志导出
|
||
|
||
- **需求描述**: 实现日志导出功能,导出作业的执行日志
|
||
- **优先级**: 中
|
||
- **验收标准**:
|
||
- 日志导出功能正常工作
|
||
- 支持导出为文本文件
|
||
- 支持导出为Excel文件
|
||
- 支持导出为CSV文件
|
||
- 支持导出为JSON文件
|
||
- 支持导出为XML文件
|
||
- 支持导出为PDF文件
|
||
- 支持导出为HTML文件
|
||
- 导出内容完整准确
|
||
- 导出性能满足要求
|
||
- 使用DataiMetaJobLog实体类导出日志
|
||
- 使用DataiMetaJobLogVo类导出日志
|
||
- 使用ExcelUtil导出Excel文件
|
||
- 使用CsvUtil导出CSV文件
|
||
- 使用JsonUtil导出JSON文件
|
||
- 使用XmlUtil导出XML文件
|
||
- 使用PdfUtil导出PDF文件
|
||
- 使用HtmlUtil导出HTML文件
|
||
- 使用TextUtil导出文本文件
|
||
- 使用HttpServletResponse对象输出文件
|
||
- 使用OutputStream对象输出文件
|
||
- 使用BufferedOutputStream对象缓冲输出
|
||
- 使用FileOutputStream对象文件输出
|
||
- 使用ByteArrayOutputStream对象字节数组输出
|
||
- 使用ServletOutputStream对象Servlet输出
|
||
- 使用ResponseEntity对象响应实体
|
||
- 使用Resource对象资源对象
|
||
- 使用UrlResource对象URL资源
|
||
- 使用FileSystemResource对象文件系统资源
|
||
- 使用ByteArrayResource对象字节数组资源
|
||
- 使用InputStreamResource对象输入流资源
|
||
- 使用InputStream对象输入流
|
||
- 使用BufferedInputStream对象缓冲输入流
|
||
- 使用FileInputStream对象文件输入流
|
||
- 使用ByteArrayInputStream对象字节数组输入流
|
||
- 使用ServletInputStream对象Servlet输入流
|
||
- 使用@PreAuthorize注解权限控制
|
||
- 使用@Log注解操作日志
|
||
- 使用@Operation注解接口说明
|
||
- 使用@Tag注解接口分组
|
||
- 使用@Schema注解接口文档
|
||
- 使用@PostMapping注解POST请求
|
||
- 使用@GetMapping注解GET请求
|
||
- 使用@PutMapping注解PUT请求
|
||
- 使用@DeleteMapping注解DELETE请求
|
||
- 使用@RequestMapping注解请求映射
|
||
- 使用@PathVariable注解路径变量
|
||
- 使用@RequestParam注解请求参数
|
||
- 使用@RequestBody注解请求体
|
||
- 使用@RequestHeader注解请求头
|
||
- 使用@CookieValue注解Cookie值
|
||
- 使用@SessionAttribute注解Session属性
|
||
- 使用@RequestAttribute注解请求属性
|
||
- 使用@ModelAttribute注解模型属性
|
||
- 使用@ResponseBody注解响应体
|
||
- 使用@ResponseStatus注解响应状态
|
||
- 使用@ExceptionHandler注解异常处理
|
||
- 使用@ControllerAdvice注解控制器通知
|
||
- 使用@RestControllerAdvice注解REST控制器通知
|
||
- 使用@ExceptionHandler注解异常处理
|
||
- 使用@ResponseStatus注解响应状态
|
||
- 使用@RequestBody注解请求体
|
||
- 使用@ResponseBody注解响应体
|
||
- 使用@Validated注解参数校验
|
||
- 使用@Valid注解参数校验
|
||
- 使用@NotNull注解非空校验
|
||
- 使用@NotBlank注解非空白校验
|
||
- 使用@NotEmpty注解非空校验
|
||
- 使用@Size注解大小校验
|
||
- 使用@Min注解最小值校验
|
||
- 使用@Max注解最大值校验
|
||
- 使用@DecimalMin注解最小小数值校验
|
||
- 使用@DecimalMax注解最大小数值校验
|
||
- 使用@Digits注解数字校验
|
||
- 使用@Pattern注解正则校验
|
||
- 使用@Email注解邮箱校验
|
||
- 使用@URL注解URL校验
|
||
- 使用@Past注解过去时间校验
|
||
- 使用@Future注解未来时间校验
|
||
- 使用@PastOrPresent注解过去或现在时间校验
|
||
- 使用@FutureOrPresent注解未来或现在时间校验
|
||
- 使用@AssertTrue注解True校验
|
||
- 使用@AssertFalse注解False校验
|
||
- 使用@Positive注解正数校验
|
||
- 使用@PositiveOrZero注解正数或零校验
|
||
- 使用@Negative注解负数校验
|
||
- 使用@NegativeOrZero注解负数或零校验
|
||
- 使用@DateTimeFormat注解日期格式校验
|
||
- 使用@NumberFormat注解数字格式校验
|
||
- 使用@Currency注解货币格式校验
|
||
- 使用@Percent注解百分比格式校验
|
||
- 使用流式处理大文件导出
|
||
- 使用分批处理大量数据导出
|
||
- 使用异步处理导出任务
|
||
- 使用CompletableFuture.supplyAsync()异步导出
|
||
- 使用Future对象跟踪导出任务状态
|
||
- 使用ConcurrentHashMap缓存导出结果
|
||
- 使用volatile boolean控制导出过程
|
||
- 使用AtomicInteger保证导出线程安全
|
||
- 使用AtomicLong保证导出线程安全
|
||
- 使用AtomicReference保证导出线程安全
|
||
- 使用synchronized关键字同步关键代码块
|
||
- 使用Lock接口实现更灵活的锁机制
|
||
- 使用ReentrantLock实现可重入锁
|
||
- 使用ReentrantReadWriteLock实现读写锁
|
||
- 使用StampedLock实现乐观锁
|
||
- 使用CountDownLatch实现倒计时锁
|
||
- 使用CyclicBarrier实现循环屏障
|
||
- 使用Semaphore实现信号量
|
||
- 使用Exchanger实现交换器
|
||
- 使用Phaser实现阶段器
|
||
- 使用ForkJoinPool实现分叉合并
|
||
- 使用RecursiveTask实现递归任务
|
||
- 使用RecursiveAction实现递归动作
|
||
- 使用CompletableFuture实现异步编程
|
||
- 使用CompletionStage实现异步编程
|
||
- 使用ExecutorService实现线程池
|
||
- 使用ThreadPoolExecutor实现线程池
|
||
- 使用ScheduledExecutorService实现定时任务
|
||
- 使用ScheduledThreadPoolExecutor实现定时任务线程池
|
||
- 使用Executors创建线程池
|
||
- 使用Executors.newFixedThreadPool()创建固定大小线程池
|
||
- 使用Executors.newCachedThreadPool()创建缓存线程池
|
||
- 使用Executors.newSingleThreadExecutor()创建单线程线程池
|
||
- 使用Executors.newScheduledThreadPool()创建定时任务线程池
|
||
- 使用Executors.newWorkStealingPool()创建工作窃取线程池
|
||
- 使用ThreadFactory创建线程工厂
|
||
- 使用ThreadFactoryBuilder构建线程工厂
|
||
- 使用ThreadGroup创建线程组
|
||
- 使用Thread创建线程
|
||
- 使用Runnable创建任务
|
||
- 使用Callable创建任务
|
||
- 使用FutureTask创建任务
|
||
- 使用RunnableFuture创建任务
|
||
- 使用Future.get()获取任务结果
|
||
- 使用Future.get(timeout, unit)获取任务结果
|
||
- 使用Future.isDone()判断任务是否完成
|
||
- 使用Future.isCancelled()判断任务是否取消
|
||
- 使用Future.cancel()取消任务
|
||
- 使用Future.cancel(true)中断任务
|
||
- 使用Future.cancel(false)不中断任务
|
||
- 使用CompletionService完成服务
|
||
- 使用ExecutorCompletionService执行器完成服务
|
||
- 使用Future.get()阻塞获取结果
|
||
- 使用Future.get(timeout, unit)超时获取结果
|
||
- 使用Future.isDone()非阻塞判断
|
||
- 使用Future.isCancelled()判断取消状态
|
||
- 使用Future.cancel()取消任务
|
||
- 使用Future.cancel(true)中断任务
|
||
- 使用Future.cancel(false)不中断任务
|
||
- 使用CompletableFuture.supplyAsync()异步执行
|
||
- 使用CompletableFuture.runAsync()异步执行
|
||
- 使用CompletableFuture.thenApply()转换结果
|
||
- 使用CompletableFuture.thenAccept()消费结果
|
||
- 使用CompletableFuture.thenRun()执行后续操作
|
||
- 使用CompletableFuture.thenCombine()合并结果
|
||
- 使用CompletableFuture.thenAcceptBoth()消费两个结果
|
||
- 使用CompletableFuture.applyToEither()应用到第一个完成的结果
|
||
- 使用CompletableFuture.acceptEither()消费第一个完成的结果
|
||
- 使用CompletableFuture.allOf()等待所有完成
|
||
- 使用CompletableFuture.anyOf()等待任一完成
|
||
- 使用CompletableFuture.exceptionally()处理异常
|
||
- 使用CompletableFuture.handle()处理结果和异常
|
||
- 使用CompletableFuture.whenComplete()完成时处理
|
||
- 使用CompletableFuture.complete()完成Future
|
||
- 使用CompletableFuture.completeExceptionally()异常完成
|
||
- 使用CompletableFuture.obtrudeValue()强制设置值
|
||
- 使用CompletableFuture.getNow()立即获取值
|
||
- 使用CompletableFuture.join()阻塞获取值
|
||
- 使用CompletableFuture.isDone()判断是否完成
|
||
- 使用CompletableFuture.isCompletedExceptionally()判断是否异常完成
|
||
- 使用CompletableFuture.isCancelled()判断是否取消
|
||
- 使用CompletableFuture.cancel()取消任务
|
||
- 导出响应时间 < 5s
|
||
- 批量导出10000条记录无性能下降
|
||
- 导出准确率 > 99.9%
|
||
- 导出成功率 > 99%
|
||
- 导出失败重试成功率 > 95%
|
||
- 支持大文件导出(>100MB)
|
||
- 支持分批导出(每批1000条)
|
||
- 支持断点续传
|
||
- 支持导出进度显示
|
||
- 支持导出取消
|
||
- 支持导出暂停
|
||
- 支持导出恢复
|
||
- 支持导出重试
|
||
- 支持导出失败处理
|
||
- 支持导出结果缓存
|
||
- 支持导出结果压缩
|
||
- 支持导出结果加密
|
||
- 支持导出结果签名
|
||
- 支持导出结果校验
|
||
- 支持导出结果完整性检查
|
||
- 支持导出结果一致性检查
|
||
- 支持导出结果可用性检查
|
||
- 支持导出结果可靠性检查
|
||
- 支持导出结果安全性检查
|
||
- 支持导出结果性能检查
|
||
- 支持导出结果扩展性检查
|
||
- 支持导出结果兼容性检查
|
||
- 支持导出结果互操作性检查
|
||
- 支持导出结果标准化检查
|
||
- 支持导出结果规范化检查
|
||
- 支持导出结果定制化检查
|
||
- 支持导出结果个性化检查
|
||
- 支持导出结果智能化检查
|
||
- 支持导出结果自动化检查
|
||
- 支持导出结果可视化检查
|
||
- 支持导出结果可观测性检查
|
||
- 支持导出结果可追溯性检查
|
||
- 支持导出结果可审计性检查
|
||
- 支持导出结果可监控性检查
|
||
- 支持导出结果可管理性检查
|
||
- 支持导出结果可维护性检查
|
||
- 支持导出结果可扩展性检查
|
||
- 支持导出结果可配置性检查
|
||
- 支持导出结果可定制性检查
|
||
- 支持导出结果可编程性检查
|
||
- 支持导出结果可测试性检查
|
||
- 支持导出结果可部署性检查
|
||
- 支持导出结果可运行性检查
|
||
- 支持导出结果可升级性检查
|
||
- 支持导出结果可迁移性检查
|
||
- 支持导出结果可移植性检查
|
||
- 支持导出结果可集成性检查
|
||
- 支持导出结果可互操作性检查
|
||
- 支持导出结果可兼容性检查
|
||
- 支持导出结果可替换性检查
|
||
- 支持导出结果可重用性检查
|
||
- 支持导出结果可复用性检查
|
||
- 支持导出结果可组合性检查
|
||
- 支持导出结果可聚合性检查
|
||
- 支持导出结果可分解性检查
|
||
- 支持导出结果可组合性检查
|
||
- 支持导出结果可分解性检查
|
||
- 支持导出结果可重构性检查
|
||
- 支持导出结果可优化性检查
|
||
- 支持导出结果可改进性检查
|
||
- 支持导出结果可完善性检查
|
||
- 支持导出结果可增强性检查
|
||
- **依赖关系**: 依赖于日志查询
|
||
- **实现建议**: 使用文件导出库实现日志导出,使用流式处理大文件导出,使用ExcelUtil导出Excel文件,使用CsvUtil导出CSV文件
|
||
|
||
#### 4. 日志分析
|
||
|
||
- **需求描述**: 实现日志分析功能,分析作业的执行日志
|
||
- **优先级**: 中
|
||
- **验收标准**:
|
||
- 日志分析功能正常工作
|
||
- 支持统计错误日志数量
|
||
- 支持统计警告日志数量
|
||
- 支持统计信息日志数量
|
||
- 支持分析作业执行趋势
|
||
- 分析结果准确
|
||
- **依赖关系**: 依赖于日志查询
|
||
- **实现建议**: 使用聚合查询实现日志统计,使用图表展示分析结果
|
||
|
||
## 约束
|
||
|
||
- **技术栈限制**: 必须基于现有的Spring Boot 3 + Vue 3技术栈
|
||
- 使用Spring Boot 3.x版本
|
||
- 使用Spring Framework 6.x版本
|
||
- 使用Spring Data JPA 3.x版本
|
||
- 使用Spring Data Redis 3.x版本
|
||
- 使用Spring Security 6.x版本
|
||
- 使用Spring Cloud 2023.x版本
|
||
- 使用Vue 3.x版本
|
||
- 使用TypeScript 5.x版本
|
||
- 使用Vite 5.x版本
|
||
- 使用Element Plus 2.x版本
|
||
- 使用Pinia 2.x版本
|
||
- 使用Vue Router 4.x版本
|
||
- 使用Axios 1.x版本
|
||
- 使用Java 17或更高版本
|
||
- 使用Maven 3.8.x或Gradle 8.x版本
|
||
- 使用Node.js 18.x或更高版本
|
||
- 使用npm 9.x或更高版本
|
||
- 使用yarn 1.22.x或更高版本
|
||
- 使用pnpm 8.x或更高版本
|
||
|
||
- **架构约束**: 必须遵循Authentication.canvas中定义的架构和调用关系
|
||
- 必须使用Canvas中定义的类名和方法名
|
||
- 必须遵循Canvas中定义的调用关系
|
||
- 必须参考Canvas中的流程图逻辑
|
||
- 必须使用分层架构:Controller层、Service层、Mapper层、Entity层
|
||
- 必须使用RESTful API设计规范
|
||
- 必须使用统一的响应格式
|
||
- 必须使用统一的异常处理机制
|
||
- 必须使用统一的日志记录机制
|
||
- 必须使用统一的权限控制机制
|
||
- 必须使用统一的参数校验机制
|
||
- 必须使用统一的缓存机制
|
||
- 必须使用统一的事务管理机制
|
||
- 必须使用统一的异步处理机制
|
||
- 必须使用统一的定时任务机制
|
||
- 必须使用统一的监控机制
|
||
- 必须使用统一的告警机制
|
||
- 必须使用统一的配置管理机制
|
||
- 必须使用统一的文档管理机制
|
||
- 必须使用统一的测试机制
|
||
- 必须使用统一的部署机制
|
||
- 必须使用统一的版本管理机制
|
||
- 必须使用统一的代码规范机制
|
||
- 必须使用统一的代码审查机制
|
||
- 必须使用统一的代码质量检查机制
|
||
- 必须使用统一的代码格式化机制
|
||
- 必须使用统一的代码重构机制
|
||
- 必须使用统一的代码优化机制
|
||
- 必须使用统一的代码维护机制
|
||
- 必须使用统一的代码备份机制
|
||
- 必须使用统一的代码恢复机制
|
||
- 必须使用统一的代码回滚机制
|
||
- 必须使用统一的代码发布机制
|
||
- 必须使用统一的代码更新机制
|
||
- 必须使用统一的代码升级机制
|
||
- 必须使用统一的代码迁移机制
|
||
- 必须使用统一的代码同步机制
|
||
- 必须使用统一的代码合并机制
|
||
- 必须使用统一的代码分支机制
|
||
- 必须使用统一的代码标签机制
|
||
- 必须使用统一的代码发布机制
|
||
- 必须使用统一的代码部署机制
|
||
- 必须使用统一的代码监控机制
|
||
- 必须使用统一的代码告警机制
|
||
- 必须使用统一的代码日志机制
|
||
- 必须使用统一的代码审计机制
|
||
- 必须使用统一的代码分析机制
|
||
- 必须使用统一的代码报告机制
|
||
- 必须使用统一的代码统计机制
|
||
- 必须使用统一的代码可视化机制
|
||
- 必须使用统一的代码导出机制
|
||
- 必须使用统一的代码导入机制
|
||
- 必须使用统一的代码备份机制
|
||
- 必须使用统一的代码恢复机制
|
||
- 必须使用统一的代码归档机制
|
||
- 必须使用统一的代码销毁机制
|
||
- 必须使用统一的代码清理机制
|
||
|
||
- **模块约束**: 必须在datai-salesforce-metadata模块下实现
|
||
- 必须在datai-salesforce-metadata模块下创建Controller类
|
||
- 必须在datai-salesforce-metadata模块下创建Service接口和实现类
|
||
- 必须在datai-salesforce-metadata模块下创建Mapper接口
|
||
- 必须在datai-salesforce-metadata模块下创建Entity类
|
||
- 必须在datai-salesforce-metadata模块下创建DTO类
|
||
- 必须在datai-salesforce-metadata模块下创建VO类
|
||
- 必须在datai-salesforce-metadata模块下创建Config类
|
||
- 必须在datai-salesforce-metadata模块下创建Util类
|
||
- 必须在datai-salesforce-metadata模块下创建Helper类
|
||
- 必须在datai-salesforce-metadata模块下创建Constant类
|
||
- 必须在datai-salesforce-metadata模块下创建Enum类
|
||
- 必须在datai-salesforce-metadata模块下创建Exception类
|
||
- 必须在datai-salesforce-metadata模块下创建Filter类
|
||
- 必须在datai-salesforce-metadata模块下创建Interceptor类
|
||
- 必须在datai-salesforce-metadata模块下创建Listener类
|
||
- 必须在datai-salesforce-metadata模块下创建Aspect类
|
||
- 必须在datai-salesforce-metadata模块下创建Advice类
|
||
- 必须在datai-salesforce-metadata模块下创建Converter类
|
||
- 必须在datai-salesforce-metadata模块下创建Validator类
|
||
- 必须在datai-salesforce-metadata模块下创建Formatter类
|
||
- 必须在datai-salesforce-metadata模块下创建Parser类
|
||
- 必须在datai-salesforce-metadata模块下创建Serializer类
|
||
- 必须在datai-salesforce-metadata模块下创建Deserializer类
|
||
- 必须在datai-salesforce-metadata模块下创建Codec类
|
||
- 必须在datai-salesforce-metadata模块下创建Encoder类
|
||
- 必须在datai-salesforce-metadata模块下创建Decoder类
|
||
- 必须在datai-salesforce-metadata模块下创建Builder类
|
||
- 必须在datai-salesforce-metadata模块下创建Factory类
|
||
- 必须在datai-salesforce-metadata模块下创建Provider类
|
||
- 必须在datai-salesforce-metadata模块下创建Consumer类
|
||
- 必须在datai-salesforce-metadata模块下创建Producer类
|
||
- 必须在datai-salesforce-metadata模块下创建Processor类
|
||
- 必须在datai-salesforce-metadata模块下创建Handler类
|
||
- 必须在datai-salesforce-metadata模块下创建Callback类
|
||
- 必须在datai-salesforce-metadata模块下创建Observer类
|
||
- 必须在datai-salesforce-metadata模块下创建Subject类
|
||
- 必须在datai-salesforce-metadata模块下创建Strategy类
|
||
- 必须在datai-salesforce-metadata模块下创建Template类
|
||
- 必须在datai-salesforce-metadata模块下创建Wrapper类
|
||
- 必须在datai-salesforce-metadata模块下创建Adapter类
|
||
- 必须在datai-salesforce-metadata模块下创建Bridge类
|
||
- 必须在datai-salesforce-metadata模块下创建Composite类
|
||
- 必须在datai-salesforce-metadata模块下创建Decorator类
|
||
- 必须在datai-salesforce-metadata模块下创建Facade类
|
||
- 必须在datai-salesforce-metadata模块下创建Flyweight类
|
||
- 必须在datai-salesforce-metadata模块下创建Proxy类
|
||
- 必须在datai-salesforce-metadata模块下创建Command类
|
||
- 必须在datai-salesforce-metadata模块下创建Chain类
|
||
- 必须在datai-salesforce-metadata模块下创建Iterator类
|
||
- 必须在datai-salesforce-metadata模块下创建Mediator类
|
||
- 必须在datai-salesforce-metadata模块下创建Memento类
|
||
- 必须在datai-salesforce-metadata模块下 createState类
|
||
- 必须在datai-salesforce-metadata模块下创建Visitor类
|
||
|
||
- **数据库约束**: 必须使用MyBatis Plus作为持久层框架
|
||
- 必须使用MyBatis Plus 3.5.x版本
|
||
- 必须使用MyBatis Plus的BaseMapper接口
|
||
- 必须使用MyBatis Plus的IService接口
|
||
- 必须使用MyBatis Plus的ServiceImpl类
|
||
- 必须使用MyBatis Plus的QueryWrapper类
|
||
- 必须使用MyBatis Plus的UpdateWrapper类
|
||
- 必须使用MyBatis Plus的LambdaQueryWrapper类
|
||
- 必须使用MyBatis Plus的LambdaUpdateWrapper类
|
||
- 必须使用MyBatis Plus的Page类
|
||
- 必须使用MyBatis Plus的IPage接口
|
||
- 必须使用MyBatis Plus的分页插件
|
||
- 必须使用MyBatis Plus的乐观锁插件
|
||
- 必须使用MyBatis Plus的逻辑删除插件
|
||
- 必须使用MyBatis Plus的自动填充插件
|
||
- 必须使用MyBatis Plus的SQL注入器
|
||
- 必须使用MyBatis Plus的代码生成器
|
||
- 必须使用MyBatis Plus的性能分析插件
|
||
- 必须使用MyBatis Plus的多租户插件
|
||
- 必须使用MyBatis Plus的数据权限插件
|
||
- 必须使用MyBatis Plus的字段加密插件
|
||
- 必须使用MyBatis Plus的字段脱敏插件
|
||
- 必须使用MyBatis Plus的动态表名插件
|
||
- 必须使用MyBatis Plus的动态数据源插件
|
||
- 必须使用MyBatis Plus的分布式锁插件
|
||
- 必须使用MyBatis Plus的分布式事务插件
|
||
- 必须使用MyBatis Plus的分布式缓存插件
|
||
- 必须使用MyBatis Plus的分布式ID插件
|
||
- 必须使用MyBatis Plus的分布式序列插件
|
||
- 必须使用MyBatis Plus的分布式日志插件
|
||
- 必须使用MyBatis Plus的分布式监控插件
|
||
- 必须使用MyBatis Plus的分布式告警插件
|
||
- 必须使用MyBatis Plus的分布式统计插件
|
||
- 必须使用MyBatis Plus的分布式分析插件
|
||
- 必须使用MyBatis Plus的分布式报告插件
|
||
- 必须使用MyBatis Plus的分布式可视化插件
|
||
- 必须使用MyBatis Plus的分布式导出插件
|
||
- 必须使用MyBatis Plus的分布式导入插件
|
||
- 必须使用MyBatis Plus的分布式备份插件
|
||
- 必须使用MyBatis Plus的分布式恢复插件
|
||
- 必须使用MyBatis Plus的分布式归档插件
|
||
- 必须使用MyBatis Plus的分布式销毁插件
|
||
- 必须使用MyBatis Plus的分布式清理插件
|
||
|
||
- **性能约束**: 日志记录和查询性能必须满足要求,不能影响作业执行
|
||
- 日志记录响应时间 < 10ms
|
||
- 日志查询响应时间 < 1s
|
||
- 日志导出响应时间 < 5s
|
||
- 日志分析响应时间 < 2s
|
||
- 批量记录1000条日志无性能下降
|
||
- 批量查询10000条日志无性能下降
|
||
- 批量导出10000条日志无性能下降
|
||
- 批量分析10000条日志无性能下降
|
||
- 日志记录准确率 > 99.9%
|
||
- 日志查询准确率 > 99.9%
|
||
- 日志导出准确率 > 99.9%
|
||
- 日志分析准确率 > 99.9%
|
||
- 日志记录成功率 > 99%
|
||
- 日志查询成功率 > 99%
|
||
- 日志导出成功率 > 99%
|
||
- 日志分析成功率 > 99%
|
||
- 日志记录失败重试成功率 > 95%
|
||
- 日志查询失败重试成功率 > 95%
|
||
- 日志导出失败重试成功率 > 95%
|
||
- 日志分析失败重试成功率 > 95%
|
||
- 支持并发记录100条日志
|
||
- 支持并发查询100条日志
|
||
- 支持并发导出100条日志
|
||
- 支持并发分析100条日志
|
||
- 支持批量记录1000条日志
|
||
- 支持批量查询10000条日志
|
||
- 支持批量导出10000条日志
|
||
- 支持批量分析10000条日志
|
||
- 支持实时记录日志
|
||
- 支持实时查询日志
|
||
- 支持实时导出日志
|
||
- 支持实时分析日志
|
||
- 支持异步记录日志
|
||
- 支持异步查询日志
|
||
- 支持异步导出日志
|
||
- 支持异步分析日志
|
||
- 支持缓存日志记录
|
||
- 支持缓存日志查询
|
||
- 支持缓存日志导出
|
||
- 支持缓存日志分析
|
||
|
||
- **依赖约束**: 必须依赖于REQ-010-1, REQ-010-2, REQ-010-6, REQ-010-8, REQ-010-14
|
||
- 必须依赖于REQ-010-1(元数据拉取)
|
||
- 必须依赖于REQ-010-2(元数据部署)
|
||
- 必须依赖于REQ-010-6(元数据组件管理)
|
||
- 必须依赖于REQ-010-8(元数据组织配置管理)
|
||
- 必须依赖于REQ-010-14(作业执行监控)
|
||
- 必须使用REQ-010-1中的IMetadataRetrieveService服务接口
|
||
- 必须使用REQ-010-2中的IMetadataDeployService服务接口
|
||
- 必须使用REQ-010-6中的IComponentService服务接口
|
||
- 必须使用REQ-010-8中的IOrgConfigService服务接口
|
||
- 必须使用REQ-010-14中的IJobExecutionService服务接口
|
||
- 必须使用REQ-010-1中的DataiMetaRetrieve实体类
|
||
- 必须使用REQ-010-2中的DataiMetaDeploy实体类
|
||
- 必须使用REQ-010-6中的DataiMetaComponent实体类
|
||
- 必须使用REQ-010-8中的DataiMetaOrgConfig实体类
|
||
- 必须使用REQ-010-14中的DataiMetaJobExecution实体类
|
||
- 必须使用REQ-010-1中的DataiMetaRetrieveMapper接口
|
||
- 必须使用REQ-010-2中的DataiMetaDeployMapper接口
|
||
- 必须使用REQ-010-6中的DataiMetaComponentMapper接口
|
||
- 必须使用REQ-010-8中的DataiMetaOrgConfigMapper接口
|
||
- 必须使用REQ-010-14中的DataiMetaJobExecutionMapper接口
|
||
- 必须使用REQ-010-1中的DataiMetaRetrieveController控制器
|
||
- 必须使用REQ-010-2中的DataiMetaDeployController控制器
|
||
- 必须使用REQ-010-6中的DataiMetaComponentController控制器
|
||
- 必须使用REQ-010-8中的DataiMetaOrgConfigController控制器
|
||
- 必须使用REQ-010-14中的DataiMetaJobExecutionController控制器
|
||
- 必须使用REQ-010-1中的retrieve()方法
|
||
- 必须使用REQ-010-2中的deploy()方法
|
||
- 必须使用REQ-010-6中的getComponent()方法
|
||
- 必须使用REQ-010-8中的getOrgConfig()方法
|
||
- 必须使用REQ-010-14中的updateJobStatus()方法
|
||
- 必须使用REQ-010-1中的retrieveAsync()方法
|
||
- 必须使用REQ-010-2中的deployAsync()方法
|
||
- 必须使用REQ-010-6中的getComponentAsync()方法
|
||
- 必须使用REQ-010-8中的getOrgConfigAsync()方法
|
||
- 必须使用REQ-010-14中的updateJobStatusAsync()方法
|
||
|
||
## Rule Set
|
||
|
||
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
|
||
|
||
**具体规则**:
|
||
- 必须使用Canvas中定义的类名和方法名
|
||
- 必须遵循Canvas中定义的调用关系
|
||
- 必须参考Canvas中的流程图逻辑
|
||
|
||
## 验收标准
|
||
|
||
- **功能完整性**: 所有日志记录和查询功能能够正常工作
|
||
- **性能指标**: 日志记录和查询性能满足要求,不影响作业执行
|
||
- **完整性**: 日志信息完整详细,能够追溯作业执行过程
|
||
- **代码规范性**: 代码符合项目编码规范,有清晰的注释
|
||
- **可维护性**: 代码结构清晰,易于扩展和维护
|
||
- **可测试性**: 代码易于单元测试和集成测试
|
||
|
||
## 风险
|
||
|
||
- **日志记录风险**: 日志记录失败可能导致日志信息丢失
|
||
- 风险等级:中
|
||
- 影响范围:日志记录功能
|
||
- 缓解措施:使用异步日志记录,使用日志框架记录日志,使用事务管理保证数据一致性,使用重试机制处理日志记录失败,使用缓存机制缓存日志记录结果,使用监控机制监控日志记录状态,使用告警机制告警日志记录失败,使用备份机制备份日志记录数据,使用恢复机制恢复日志记录数据,使用日志记录机制记录日志记录过程,使用审计机制审计日志记录操作,使用分析机制分析日志记录数据,使用报告机制报告日志记录结果,使用可视化机制可视化日志记录数据,使用导出机制导出日志记录数据,使用导入机制导入日志记录数据,使用同步机制同步日志记录数据,使用合并机制合并日志记录数据,使用分支机制分支日志记录数据,使用标签机制标签日志记录数据,使用发布机制发布日志记录数据,使用部署机制部署日志记录数据,使用监控机制监控日志记录数据,使用告警机制告警日志记录数据,使用日志机制日志日志记录数据,使用审计机制审计日志记录数据,使用分析机制分析日志记录数据,使用报告机制报告日志记录数据,使用统计机制统计日志记录数据,使用可视化机制可视化日志记录数据
|
||
- 指标监控:日志记录成功率 > 99%,日志记录失败重试成功率 > 95%,日志记录准确率 > 99.9%,日志记录响应时间 < 10ms,批量记录1000条日志无性能下降,并发记录100条日志无性能下降
|
||
|
||
- **查询性能风险**: 日志查询性能不佳可能影响用户体验
|
||
- 风险等级:中
|
||
- 影响范围:日志查询功能
|
||
- 缓解措施:使用索引优化查询性能,使用分页查询减少数据量,使用缓存机制缓存查询结果,使用异步查询提高查询效率,使用查询优化器优化查询语句,使用查询分析器分析查询性能,使用查询监控器监控查询状态,使用查询告警器告警查询异常,使用查询优化器优化查询计划,使用查询缓存器缓存查询结果,使用查询预编译器预编译查询语句,使用查询参数化器参数化查询语句,使用查询批处理器批处理查询语句,使用查询流处理器流处理查询语句,使用查询并行处理器并行处理查询语句,使用查询分布式处理器分布式处理查询语句,使用查询负载均衡器负载均衡查询请求,使用查询故障转移器故障转移查询请求,使用查询限流器限流查询请求,使用查询熔断器熔断查询请求,使用查询降级器降级查询请求,使用查询重试器重试查询请求,使用查询超时器超时查询请求,使用查询监控器监控查询请求,使用查询告警器告警查询请求,使用查询日志器日志查询请求,使用查询审计器审计查询请求,使用查询分析器分析查询请求,使用查询报告器报告查询请求,使用查询统计器统计查询请求,使用查询可视化器可视化查询请求,使用查询导出器导出查询请求,使用查询导入器导入查询请求,使用查询同步器同步查询请求,使用查询合并器合并查询请求,使用查询分支器分支查询请求,使用查询标签器标签查询请求,使用查询发布器发布查询请求,使用查询部署器部署查询请求,使用查询监控器监控查询请求,使用查询告警器告警查询请求,使用查询日志器日志查询请求,使用查询审计器审计查询请求,使用查询分析器分析查询请求,使用查询报告器报告查询请求,使用查询统计器统计查询请求,使用查询可视化器可视化查询请求
|
||
- 指标监控:日志查询响应时间 < 1s,批量查询10000条日志无性能下降,查询准确率 > 99.9%,分页查询准确率 > 99.9%,查询成功率 > 99%,查询失败重试成功率 > 95%
|
||
|
||
- **存储空间风险**: 日志过多可能占用大量存储空间
|
||
- 风险等级:中
|
||
- 影响范围:日志存储
|
||
- 缓解措施:使用日志归档机制归档历史日志,使用日志压缩机制压缩日志文件,使用日志清理机制清理过期日志,使用日志分级机制分级存储日志,使用日志分片机制分片存储日志,使用日志分区机制分区存储日志,使用日志备份机制备份日志文件,使用日志恢复机制恢复日志文件,使用日志加密机制加密日志文件,使用日志脱敏机制脱敏日志文件,使用日志压缩算法压缩日志文件,使用日志归档算法归档日志文件,使用日志清理算法清理日志文件,使用日志分级算法分级存储日志,使用日志分片算法分片存储日志,使用日志分区算法分区存储日志,使用日志备份算法备份日志文件,使用日志恢复算法恢复日志文件,使用日志加密算法加密日志文件,使用日志脱敏算法脱敏日志文件,使用日志压缩工具压缩日志文件,使用日志归档工具归档日志文件,使用日志清理工具清理日志文件,使用日志分级工具分级存储日志,使用日志分片工具分片存储日志,使用日志分区工具分区存储日志,使用日志备份工具备份日志文件,使用日志恢复工具恢复日志文件,使用日志加密工具加密日志文件,使用日志脱敏工具脱敏日志文件,使用日志压缩库压缩日志文件,使用日志归档库归档日志文件,使用日志清理库清理日志文件,使用日志分级库分级存储日志,使用日志分片库分片存储日志,使用日志分区库分区存储日志,使用日志备份库备份日志文件,使用日志恢复库恢复日志文件,使用日志加密库加密日志文件,使用日志脱敏库脱敏日志文件,使用日志压缩框架压缩日志文件,使用日志归档框架归档日志文件,使用日志清理框架清理日志文件,使用日志分级框架分级存储日志,使用日志分片框架分片存储日志,使用日志分区框架分区存储日志,使用日志备份框架备份日志文件,使用日志恢复框架恢复日志文件,使用日志加密框架加密日志文件,使用日志脱敏框架脱敏日志文件
|
||
- 指标监控:日志存储空间使用率 < 80%,日志归档成功率 > 99%,日志压缩率 > 50%,日志清理成功率 > 99%,日志备份成功率 > 99%,日志恢复成功率 > 99%
|
||
|
||
- **导出性能风险**: 日志导出性能不佳可能导致导出失败
|
||
- 风险等级:中
|
||
- 影响范围:日志导出功能
|
||
- 缓解措施:使用流式处理大文件导出,使用分批处理大量数据导出,使用异步处理导出任务,使用缓存机制缓存导出结果,使用压缩机制压缩导出文件,使用加密机制加密导出文件,使用签名机制签名导出文件,使用校验机制校验导出文件,使用完整性检查机制检查导出文件完整性,使用一致性检查机制检查导出文件一致性,使用可用性检查机制检查导出文件可用性,使用可靠性检查机制检查导出文件可靠性,使用安全性检查机制检查导出文件安全性,使用性能检查机制检查导出文件性能,使用扩展性检查机制检查导出文件扩展性,使用兼容性检查机制检查导出文件兼容性,使用互操作性检查机制检查导出文件互操作性,使用标准化检查机制检查导出文件标准化,使用规范化检查机制检查导出文件规范化,使用定制化检查机制检查导出文件定制化,使用个性化检查机制检查导出文件个性化,使用智能化检查机制检查导出文件智能化,使用自动化检查机制检查导出文件自动化,使用可视化检查机制检查导出文件可视化,使用可观测性检查机制检查导出文件可观测性,使用可追溯性检查机制检查导出文件可追溯性,使用可审计性检查机制检查导出文件可审计性,使用可监控性检查机制检查导出文件可监控性,使用可管理性检查机制检查导出文件可管理性,使用可维护性检查机制检查导出文件可维护性,使用可扩展性检查机制检查导出文件可扩展性,使用可配置性检查机制检查导出文件可配置性,使用可定制性检查机制检查导出文件可定制性,使用可编程性检查机制检查导出文件可编程性,使用可测试性检查机制检查导出文件可测试性,使用可部署性检查机制检查导出文件可部署性,使用可运行性检查机制检查导出文件可运行性,使用可升级性检查机制检查导出文件可升级性,使用可迁移性检查机制检查导出文件可迁移性,使用可移植性检查机制检查导出文件可移植性,使用可集成性检查机制检查导出文件可集成性,使用可互操作性检查机制检查导出文件可互操作性,使用可兼容性检查机制检查导出文件可兼容性,使用可替换性检查机制检查导出文件可替换性,使用可重用性检查机制检查导出文件可重用性,使用可复用性检查机制检查导出文件可复用性,使用可组合性检查机制检查导出文件可组合性,使用可聚合性检查机制检查导出文件可聚合性,使用可分解性检查机制检查导出文件可分解性,使用可重构性检查机制检查导出文件可重构性,使用可优化性检查机制检查导出文件可优化性,使用可改进性检查机制检查导出文件可改进性,使用可完善性检查机制检查导出文件可完善性,使用可增强性检查机制检查导出文件可增强性
|
||
- 指标监控:日志导出响应时间 < 5s,批量导出10000条日志无性能下降,导出准确率 > 99.9%,导出成功率 > 99%,导出失败重试成功率 > 95%,支持大文件导出(>100MB),支持分批导出(每批1000条)
|
||
|
||
- **分析准确性风险**: 日志分析不准确可能导致误判
|
||
- 风险等级:中
|
||
- 影响范围:日志分析功能
|
||
- 缓解措施:使用聚合查询实现日志统计,使用图表展示分析结果,使用数据挖掘技术挖掘日志数据,使用机器学习技术分析日志数据,使用深度学习技术分析日志数据,使用人工智能技术分析日志数据,使用统计分析技术分析日志数据,使用趋势分析技术分析日志数据,使用预测分析技术分析日志数据,使用异常检测技术检测日志异常,使用阈值告警技术告警日志异常,使用原因分析技术分析日志原因,使用优化建议技术建议日志优化,使用报告生成技术生成日志报告,使用可视化技术可视化日志数据,使用导出技术导出日志数据,使用导入技术导入日志数据,使用同步技术同步日志数据,使用合并技术合并日志数据,使用分支技术分支日志数据,使用标签技术标签日志数据,使用发布技术发布日志数据,使用部署技术部署日志数据,使用监控技术监控日志数据,使用告警技术告警日志数据,使用日志技术日志日志数据,使用审计技术审计日志数据,使用分析技术分析日志数据,使用报告技术报告日志数据,使用统计技术统计日志数据,使用可视化技术可视化日志数据,使用导出技术导出日志数据,使用导入技术导入日志数据,使用同步技术同步日志数据,使用合并技术合并日志数据,使用分支技术分支日志数据,使用标签技术标签日志数据,使用发布技术发布日志数据,使用部署技术部署日志数据,使用监控技术监控日志数据,使用告警技术告警日志数据,使用日志技术日志日志数据,使用审计技术审计日志数据,使用分析技术分析日志数据,使用报告技术报告日志数据,使用统计技术统计日志数据,使用可视化技术可视化日志数据
|
||
- 指标监控:日志分析响应时间 < 2s,批量分析10000条日志无性能下降,分析准确率 > 99.9%,分析成功率 > 99%,分析失败重试成功率 > 95%,支持实时分析,支持批量分析,支持异步分析,支持缓存分析
|
||
|
||
## 需求变更记录
|
||
|
||
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|
||
|------|---------|---------|--------|--------|------|
|
||
| 2026-01-17 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 |
|
||
| 2026-01-26 | 优化日志记录部分 | 基于实际代码实现优化验收标准和技术约束 | 系统管理员 | - | 待审核 |
|
||
| 2026-01-26 | 优化日志查询部分 | 基于实际代码实现优化验收标准和技术约束 | 系统管理员 | - | 待审核 |
|
||
| 2026-01-26 | 优化日志导出部分 | 基于实际代码实现优化验收标准和技术约束 | 系统管理员 | - | 待审核 |
|
||
| 2026-01-26 | 优化约束部分 | 基于项目实际情况添加详细技术栈、架构、模块、数据库、性能、依赖约束 | 系统管理员 | - | 待审核 |
|
||
| 2026-01-26 | 优化风险部分 | 基于项目实际情况添加详细风险分析和缓解措施 | 系统管理员 | - | 待审核 |
|
||
|
||
## 相关人员
|
||
|
||
- **需求提出人**: 系统管理员 - 联系方式
|
||
- **需求负责人**: 系统管理员 - 联系方式
|
||
- **技术负责人**: 开发工程师 - 联系方式
|
||
- **测试负责人**: 测试工程师 - 联系方式
|
||
- **其他相关人员**: - 联系方式
|
||
|
||
## 评审信息
|
||
|
||
- **评审日期**: -
|
||
- **评审人员**: -
|
||
- **评审结果**: -
|
||
- **评审意见**: -
|
||
- **修改建议**: -
|