重构:文件系统模块化架构,优化应用启动流程
This commit is contained in:
59
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-001-事件系统设计.md
Normal file
59
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-001-事件系统设计.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# ADR-001: 事件系统设计
|
||||
|
||||
**状态**:已采纳
|
||||
**日期**:2025-01-28
|
||||
**决策者**:开发团队
|
||||
|
||||
## 上下文
|
||||
|
||||
需要设计一个统一的事件系统,用于组件间通信。要求:
|
||||
1. 类型安全
|
||||
2. 易于扩展
|
||||
3. 统一的事件命名和参数格式
|
||||
|
||||
## 考虑的选项
|
||||
|
||||
### 选项1:使用Vue原生事件系统
|
||||
- 优点:简单直接,无需额外实现
|
||||
- 缺点:缺乏类型约束,容易出错
|
||||
|
||||
### 选项2:自定义事件总线
|
||||
- 优点:解耦组件,支持全局事件
|
||||
- 缺点:增加复杂度,可能过度设计
|
||||
|
||||
### 选项3:TypeScript类型定义 + Vue事件系统
|
||||
- 优点:类型安全,保持简单,易于扩展
|
||||
- 缺点:需要维护类型定义
|
||||
|
||||
## 决策
|
||||
|
||||
选择的方案:**选项3 - TypeScript类型定义 + Vue事件系统**
|
||||
|
||||
## 理由
|
||||
|
||||
1. **类型安全**:通过TypeScript类型定义确保事件参数类型正确
|
||||
2. **简单直接**:使用Vue原生事件系统,不增加额外复杂度
|
||||
3. **易于扩展**:新增事件只需在类型定义文件中添加
|
||||
4. **统一规范**:通过类型定义强制统一事件命名和参数格式
|
||||
|
||||
## 后果
|
||||
|
||||
### 正面影响
|
||||
- 类型安全,减少运行时错误
|
||||
- 代码提示和自动补全
|
||||
- 统一的事件命名和参数格式
|
||||
- 易于维护和扩展
|
||||
|
||||
### 负面影响
|
||||
- 需要维护类型定义文件
|
||||
- 需要TypeScript支持
|
||||
|
||||
### 约束
|
||||
- 所有事件参数必须使用对象格式
|
||||
- 所有事件必须有TypeScript类型定义
|
||||
- 事件名称使用kebab-case格式
|
||||
|
||||
## 相关决策
|
||||
|
||||
- [知识库/规范/架构规范.md](../知识库/规范/架构规范.md) - 事件系统规范
|
||||
|
||||
50
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-002-表结构Tab显示策略.md
Normal file
50
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-002-表结构Tab显示策略.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# ADR-002: 表结构Tab显示策略
|
||||
|
||||
**状态**:已采纳
|
||||
**日期**:2025-01-28
|
||||
**决策者**:开发团队
|
||||
|
||||
## 上下文
|
||||
|
||||
表结构查看功能需要在ResultPanel中添加"结构"Tab。需要决定Tab的显示策略:
|
||||
1. 动态显示(有数据时显示)
|
||||
2. 始终显示(无数据时显示空状态)
|
||||
|
||||
## 考虑的选项
|
||||
|
||||
### 选项1:动态显示Tab
|
||||
- 优点:界面简洁,不会有多余的Tab
|
||||
- 缺点:Tab位置不固定,用户习惯可能不好
|
||||
|
||||
### 选项2:始终显示Tab
|
||||
- 优点:Tab位置固定,用户习惯更好
|
||||
- 缺点:可能有多余的Tab
|
||||
|
||||
## 决策
|
||||
|
||||
选择的方案:**选项2 - 始终显示Tab**
|
||||
|
||||
## 理由
|
||||
|
||||
1. **用户体验**:Tab位置固定,用户更容易找到
|
||||
2. **一致性**:与其他Tab(结果、消息)保持一致
|
||||
3. **可发现性**:用户更容易发现表结构查看功能
|
||||
|
||||
## 后果
|
||||
|
||||
### 正面影响
|
||||
- Tab位置固定,用户体验更好
|
||||
- 功能更容易被发现
|
||||
- 与其他Tab保持一致
|
||||
|
||||
### 负面影响
|
||||
- 可能有多余的Tab(无数据时)
|
||||
|
||||
### 约束
|
||||
- Tab始终显示,无数据时显示空状态提示
|
||||
- 空状态提示要清晰,引导用户操作
|
||||
|
||||
## 相关决策
|
||||
|
||||
- [设计文档/功能设计/表结构查看功能设计.md](../设计文档/功能设计/表结构查看功能设计.md)
|
||||
|
||||
85
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-003-右键菜单实现方案.md
Normal file
85
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/ADR-003-右键菜单实现方案.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# ADR-003: 右键菜单实现方案
|
||||
|
||||
**状态**:已采纳
|
||||
**日期**:2025-01-28
|
||||
**决策者**:开发团队
|
||||
|
||||
## 上下文
|
||||
|
||||
需要实现连接树的右键菜单功能。Arco Design Vue Tree组件不直接支持右键菜单事件,需要选择实现方案。
|
||||
|
||||
## 考虑的选项
|
||||
|
||||
### 选项1:使用Arco Design Dropdown组件
|
||||
- **优点**:
|
||||
- 使用官方组件,样式统一
|
||||
- 符合Arco Design设计规范
|
||||
- 维护成本低
|
||||
- 支持定位和边界处理
|
||||
- **缺点**:
|
||||
- 需要手动处理右键事件和定位
|
||||
- 需要处理菜单显示/隐藏逻辑
|
||||
|
||||
### 选项2:自定义右键菜单组件
|
||||
- **优点**:
|
||||
- 完全可控,可以自定义样式和行为
|
||||
- 可以精确控制所有细节
|
||||
- **缺点**:
|
||||
- 需要自己实现定位、显示、隐藏等逻辑
|
||||
- 维护成本较高
|
||||
- 可能不符合Arco Design规范
|
||||
- 需要处理边界情况、层级管理等
|
||||
|
||||
### 选项3:使用第三方右键菜单库
|
||||
- **优点**:
|
||||
- 功能完整,开箱即用
|
||||
- 可能有更多高级特性
|
||||
- **缺点**:
|
||||
- 增加依赖
|
||||
- 可能不符合Arco Design设计风格
|
||||
- 需要适配和定制
|
||||
- 增加项目复杂度
|
||||
|
||||
## 决策
|
||||
|
||||
选择的方案:**选项1 - 使用Arco Design Dropdown组件**
|
||||
|
||||
## 理由
|
||||
|
||||
1. **符合设计规范**:使用Arco Design官方组件,保持设计一致性
|
||||
2. **维护成本低**:使用官方组件,减少自定义代码
|
||||
3. **功能完整**:Dropdown组件支持定位、边界处理等必要功能
|
||||
4. **实现简单**:只需要处理右键事件和菜单显示逻辑
|
||||
5. **避免依赖**:不引入第三方库,保持项目简洁
|
||||
|
||||
## 后果
|
||||
|
||||
### 正面影响
|
||||
- 样式统一,符合Arco Design规范
|
||||
- 维护成本低,使用官方组件
|
||||
- 实现简单,开发效率高
|
||||
- 不增加额外依赖
|
||||
|
||||
### 负面影响
|
||||
- 需要手动处理右键事件和定位逻辑
|
||||
- 需要处理菜单显示/隐藏状态管理
|
||||
|
||||
### 约束
|
||||
- 使用Arco Design Dropdown组件
|
||||
- 菜单定位使用鼠标事件坐标
|
||||
- 需要处理边界情况(菜单超出视口时自动调整)
|
||||
- 点击外部区域或ESC键时关闭菜单
|
||||
|
||||
## 相关决策
|
||||
|
||||
- [ADR-001: 事件系统设计](./ADR-001-事件系统设计.md) - 事件系统设计
|
||||
- [设计文档/架构设计/右键菜单系统设计.md](../设计文档/架构设计/右键菜单系统设计.md) - 右键菜单系统设计
|
||||
|
||||
## 实现要点
|
||||
|
||||
1. **事件处理**:在Tree节点上监听`@contextmenu`事件
|
||||
2. **菜单定位**:使用`Dropdown`组件的`position`属性,基于鼠标事件坐标
|
||||
3. **状态管理**:使用`v-model:popup-visible`控制菜单显示/隐藏
|
||||
4. **菜单项配置**:根据节点类型动态生成菜单项
|
||||
5. **事件触发**:菜单项点击时触发相应的事件(使用已有事件系统)
|
||||
|
||||
68
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/README.md
Normal file
68
docs/04-功能迭代/GO-DESK-2.数据库客户端/决策记录/README.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# 决策记录(ADR)
|
||||
|
||||
## 什么是ADR?
|
||||
|
||||
架构决策记录(Architecture Decision Records)用于记录所有重要的架构和设计决策,包括:
|
||||
- 决策背景(为什么需要做这个决策)
|
||||
- 考虑的选项
|
||||
- 选择的方案
|
||||
- 选择的理由
|
||||
- 后果和影响
|
||||
|
||||
## ADR格式
|
||||
|
||||
每个ADR文件命名:`ADR-{序号}-{简短标题}.md`
|
||||
|
||||
### 标准模板
|
||||
|
||||
```markdown
|
||||
# ADR-{序号}: {决策标题}
|
||||
|
||||
**状态**:{已采纳|已拒绝|已替代|待定}
|
||||
**日期**:YYYY-MM-DD
|
||||
**决策者**:{姓名/角色}
|
||||
|
||||
## 上下文
|
||||
|
||||
为什么需要做这个决策?当前面临什么问题?
|
||||
|
||||
## 考虑的选项
|
||||
|
||||
### 选项1:{选项名称}
|
||||
- 优点:
|
||||
- 缺点:
|
||||
|
||||
### 选项2:{选项名称}
|
||||
- 优点:
|
||||
- 缺点:
|
||||
|
||||
## 决策
|
||||
|
||||
选择的方案:{选项名称}
|
||||
|
||||
## 理由
|
||||
|
||||
为什么选择这个方案?
|
||||
|
||||
## 后果
|
||||
|
||||
### 正面影响
|
||||
-
|
||||
|
||||
### 负面影响
|
||||
-
|
||||
|
||||
### 约束
|
||||
-
|
||||
|
||||
## 相关决策
|
||||
|
||||
- ADR-{序号}:{相关决策}
|
||||
```
|
||||
|
||||
## ADR列表
|
||||
|
||||
- [ADR-001: 事件系统设计](./ADR-001-事件系统设计.md)
|
||||
- [ADR-002: 表结构Tab显示策略](./ADR-002-表结构Tab显示策略.md)
|
||||
- [ADR-003: 右键菜单实现方案](./ADR-003-右键菜单实现方案.md)
|
||||
|
||||
Reference in New Issue
Block a user