datai/datai-scenes/datai-scene-salesforce/docs/sessions/2026-02-03-002-06-session.md

8.5 KiB
Raw Blame History

会话记录:日志记录功能

元数据

  • 需求编号002-06
  • 需求名称:日志记录
  • 会话日期2026-02-03
  • 会话状态:进行中

阶段记录

阶段 1需求定义

  • 状态:已完成
  • 时间2026-01-28
  • 文档日志记录需求文档
  • 关键决策
    • 使用 apex.jar 中的 LogInfo、LogType、LogCategory、LogCategoryLevel 类
    • 固定使用 source org 类型
    • 日志信息存储到数据库
    • 提供 REST API 接口
    • 使用 ReentrantLock 保证多线程安全

阶段 2方案设计

  • 状态:已完成
  • 时间2026-02-03
  • 文档日志记录-设计
  • 关键决策
    • 采用分层架构Controller -> Service -> Mapper -> Entity
    • 使用 MyBatis-Plus 进行数据访问
    • 实现 6 个 RESTful API 端点
    • 使用 ReentrantLock 保证多线程安全
    • 支持日志信息持久化到数据库
    • 支持调试头部设置和清除
    • 支持执行匿名代码并获取日志

阶段 3方案决策

  • 状态:已完成
  • 时间2026-02-03
  • 文档日志记录技术选型-ADR
  • 关键决策
    • 决策 1使用数据库持久化MySQL创建 2 张表datai_apex_log、datai_apex_log_category
    • 决策 2:使用 ReentrantLock 保证多线程安全
    • 决策 3:集中式调试头部管理
    • 决策 4:独立表存储日志分类
    • 决策 5:先获取日志信息,再保存到数据库
    • 决策 6:先设置调试头部,再执行代码,最后获取日志
    • 决策 7独立权限标识apex:log:query、apex:log:manage、apex:log:execute

阶段 4数据库结构生成

  • 状态:已完成
  • 时间2026-02-03
  • 文档日志记录-SQL 脚本
  • 关键变更
    • 创建 datai_apex_logApex 日志表),包含 17 个字段
    • 创建 datai_apex_log_categoryApex 日志分类表),包含 5 个字段
    • 创建 3 个数据字典apex_log_category、apex_log_level、apex_log_type
    • 添加 7 个索引主键索引、唯一索引、5 个普通索引)
    • 添加 1 个外键约束fk_log_category_log

阶段 5提示词生成

  • 状态:已完成
  • 时间2026-02-03
  • 文档日志记录-提示词
  • 关键内容
    • 引用真源需求文档、设计文档、决策记录、SQL 脚本)
    • 需求描述6 个核心功能)
    • 设计方案(分层架构、模块结构)
    • 输出格式要求必须包含的文件、REST API 接口列表)
    • 代码规范要求(命名规范、注释规范、日志规范、异常处理)
    • 测试要求(单元测试覆盖率、测试用例场景)
    • 实现要点(核心实现代码示例)

对话记录

2026-02-03

用户d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\docs\requirements\sub\2026-01-28-002-06-日志记录.md 进入阶段二

助手 已完成日志记录功能的设计文档创建,包含:

  1. 架构设计(分层架构图)
  2. 数据模型2 张数据库表datai_apex_log、datai_apex_log_category
  3. 接口设计6 个 RESTful API
  4. 核心功能(获取日志、设置调试头部、清除调试头部、查询日志列表、获取日志详情、执行匿名代码并获取日志)
  5. 集成策略(与 Salesforce Apex API 集成)
  6. 多线程安全设计(使用 ReentrantLock

已更新:

  • 项目索引 index.md
  • 需求文档(添加设计文档引用)

待办事项

  • 创建设计文档
  • 更新项目索引
  • 更新需求文档
  • 进入阶段 3方案决策

2026-02-03阶段 3 完成)

用户:进入

助手 已完成日志记录功能的架构决策记录ADR创建包含 7 个关键决策:

  1. 数据持久化策略使用数据库持久化MySQL创建 2 张表datai_apex_log、datai_apex_log_category
  2. 多线程安全设计:使用 ReentrantLock 保证多线程安全
  3. 调试头部管理策略:集中式调试头部管理
  4. 日志分类存储策略:独立表存储日志分类
  5. 日志信息获取策略:先获取日志信息,再保存到数据库
  6. 执行匿名代码并获取日志策略:先设置调试头部,再执行代码,最后获取日志
  7. 权限控制策略独立权限标识apex:log:query、apex:log:manage、apex:log:execute

已更新:

  • 项目索引 index.md
  • 设计文档(添加决策记录引用)
  • 会话记录

2026-02-03阶段 4 完成)

用户:进入下一阶段(数据库结构生成)

助手 已完成日志记录功能的数据库结构生成,包含:

  1. 创建 datai_apex_logApex 日志表),包含 17 个字段
  2. 创建 datai_apex_log_categoryApex 日志分类表),包含 5 个字段
  3. 创建 3 个数据字典apex_log_category、apex_log_level、apex_log_type
  4. 添加 7 个索引主键索引、唯一索引、5 个普通索引)
  5. 添加 1 个外键约束fk_log_category_log

已更新:

  • 项目索引 index.md
  • 设计文档(添加 SQL 脚本引用)
  • 会话记录

2026-02-03阶段 5 完成)

用户:进入下一个阶段

助手 已完成日志记录功能的提示词生成,包含:

  1. 引用真源需求文档、设计文档、决策记录、SQL 脚本)
  2. 需求描述6 个核心功能:获取日志信息、设置调试头部、清除调试头部、查询日志列表、获取日志详情、执行匿名代码并获取日志)
  3. 设计方案(分层架构、模块结构)
  4. 输出格式要求必须包含的文件、REST API 接口列表)
  5. 代码规范要求(命名规范、注释规范、日志规范、异常处理)
  6. 测试要求(单元测试覆盖率、测试用例场景)
  7. 实现要点(核心实现代码示例)

已更新:

  • 项目索引 index.md
  • 需求文档(添加提示词引用)
  • 会话记录

生成的文档

文档类型 文档路径 状态
需求文档 docs/requirements/sub/2026-01-28-002-06-日志记录.md 已完成
设计文档 docs/design/2026-02-03-002-06-日志记录-设计.md 已完成
决策记录 docs/decisions/2026-02-03-002-06-ADR-日志记录技术选型.md 已完成
SQL 脚本 docs/sql/2026-02-03-002-06-日志记录.sql 已完成
提示词文档 docs/prompts/2026-02-03-002-06-prompt-日志记录.md 已完成
会话记录 docs/sessions/2026-02-03-002-06-session.md 进行中

关键决策记录

架构决策

  • 决策采用分层架构Controller -> Service -> Mapper -> Entity
  • 理由
    • 与其他 Apex 功能保持一致
    • 便于维护和扩展
    • 符合项目整体架构风格

数据模型决策

  • 决策:创建 2 张表datai_apex_log、datai_apex_log_category
  • 理由
    • 独立存储日志信息
    • 支持日志分类的灵活查询
    • 一对多关系设计,一个日志可以包含多个分类

多线程安全决策

  • 决策:使用 ReentrantLock 保证多线程安全
  • 理由
    • 调试头部设置和清除操作需要保证原子性
    • 防止并发设置导致调试头部混乱
    • 方法级别的锁粒度,平衡性能和安全性

API 设计决策

  • 决策:提供 6 个 RESTful API 端点
  • 理由
    • 覆盖所有核心功能
    • 支持日志查询和详情查看
    • 支持调试头部管理
    • 支持执行匿名代码并获取日志

集成方案决策

  • 决策:使用 ApexConnectionFactory 获取 SoapConnection 实例
  • 理由
    • 复用现有的连接管理机制
    • 统一的连接管理,避免重复代码
    • 固定使用 source org 类型,简化逻辑

数据字典设计

  • 决策:创建 3 个数据字典apex_log_category、apex_log_level、apex_log_type
  • 理由
    • 标准化日志分类、级别和类型
    • 便于前端下拉选择
    • 便于数据统计和查询

数据库结构决策

  • 决策:创建 2 张表datai_apex_log、datai_apex_log_category
  • 理由
    • datai_apex_log 表存储日志基本信息
    • datai_apex_log_category 表存储日志分类详情
    • 一对多关系,支持一个日志包含多个分类
    • 级联删除,删除日志时自动删除关联分类