diff --git a/.trae/documents/plan_20260110_062839.md b/.trae/documents/plan_20260110_062839.md new file mode 100644 index 0000000..5798fac --- /dev/null +++ b/.trae/documents/plan_20260110_062839.md @@ -0,0 +1,147 @@ +# 构建完整的项目界面实施计划 + +## 1. 整体布局设计 + +### 1.1 修改App.vue布局 +- 实现左侧选择区域与右侧调试区域的双栏布局 +- 添加响应式设计,在移动端自动隐藏左侧选择区域 +- 实现左侧选择区域的折叠/展开功能 + +### 1.2 响应式设计实现 +- 使用CSS Media Queries实现响应式布局 +- PC端:左侧选择区域固定宽度,右侧调试区域自适应 +- 移动端:左侧选择区域转为下拉选择器,右侧内容区域占满屏幕宽度 + +## 2. 项目选择模块 + +### 2.1 创建项目选择组件 +- 组件位置:`src/frontend/components/ProjectSelector.vue` +- 功能: + - 项目列表展示 + - 项目类型筛选(后端项目/前端项目) + - 项目搜索功能 + - 项目选择功能 + +### 2.2 项目数据模型 +```javascript +{ + id: string, + name: string, + type: string, // 'backend' | 'frontend' + description: string, + status: string // 'running' | 'stopped' | 'error' +} +``` + +## 3. 控制台区域 + +### 3.1 创建控制台组件 +- 组件位置:`src/frontend/components/Console.vue` +- 功能: + - 命令输入框 + - 日志显示区域 + - 日志级别筛选 + - 日志清理功能 + - 自动滚动到最新日志 + +### 3.2 控制台日志管理 +- 实现日志记录上限控制,最多保存1000条记录 +- 达到上限时自动删除最旧的记录 +- 日志数据模型: +```javascript +{ + id: string, + timestamp: string, + level: string, // 'info' | 'warn' | 'error' | 'debug' + message: string +} +``` + +## 4. 调试区域管理 + +### 4.1 创建调试区域组件 +- 组件位置:`src/frontend/components/DebugArea.vue` +- 功能: + - 调试信息展示 + - 多条件筛选(时间范围、调试类型、项目名称等) + - 调试信息导出功能 + +### 4.2 调试信息数据模型 +```javascript +{ + id: string, + projectId: string, + timestamp: string, + type: string, + content: string, + metadata: object +} +``` + +## 5. 主页面整合 + +### 5.1 创建主页面组件 +- 组件位置:`src/frontend/views/MainView.vue` +- 功能: + - 整合项目选择模块、控制台区域、调试区域 + - 实现各模块间的通信 + - 管理全局状态 + +### 5.2 更新路由配置 +- 将主页面设置为默认路由 +- 保持原有的日志和命令路由,或整合到主页面中 + +## 6. 样式设计 + +### 6.1 全局样式 +- 设计统一的颜色方案 +- 定义统一的字体和间距 +- 实现主题切换功能(可选) + +### 6.2 组件样式 +- 为每个组件设计符合样品图的样式 +- 实现悬停效果和过渡动画 +- 确保移动端样式适配 + +## 7. 交互功能 + +### 7.1 项目选择交互 +- 点击项目列表项选择项目 +- 选择项目后更新控制台和调试区域的内容 +- 支持多选项目(可选) + +### 7.2 控制台交互 +- 输入命令后按Enter键发送 +- 支持命令历史记录 +- 支持日志复制功能 + +### 7.3 调试区域交互 +- 点击筛选条件展开/折叠筛选选项 +- 支持调试信息的排序和分组 +- 实现调试信息的详情查看 + +## 8. 测试与优化 + +### 8.1 功能测试 +- 测试各模块的基本功能 +- 测试响应式设计 +- 测试日志管理功能 + +### 8.2 性能优化 +- 优化长列表渲染性能 +- 优化日志滚动性能 +- 减少不必要的重新渲染 + +## 9. 实施步骤 + +1. 修改App.vue,实现基本布局结构 +2. 创建项目选择组件 +3. 创建控制台组件 +4. 创建调试区域组件 +5. 创建主页面组件,整合所有模块 +6. 更新路由配置 +7. 实现样式设计 +8. 实现交互功能 +9. 测试和优化 + +该计划将确保项目界面按照样品图所示效果构建,同时实现所有核心功能模块。 \ No newline at end of file diff --git a/openspec/changes/add-console-ui/proposal.md b/openspec/changes/add-console-ui/proposal.md new file mode 100644 index 0000000..103d94a --- /dev/null +++ b/openspec/changes/add-console-ui/proposal.md @@ -0,0 +1,15 @@ +# Change: Add Console UI + +## Why +需要为BLS Project Console添加一个现代化的控制台界面,支持项目选择、命令输入、日志显示和调试信息展示等功能。 + +## What Changes +- 添加了项目选择组件,支持项目搜索和筛选 +- 添加了控制台组件,支持命令输入和日志显示 +- 添加了调试区域组件,支持调试信息的展示和筛选 +- 实现了响应式设计,适配PC和移动端 +- 实现了控制台日志管理,限制最多1000条记录 + +## Impact +- Affected specs: specs/logging/spec.md, specs/command/spec.md +- Affected code: src/frontend/components/, src/frontend/views/, src/frontend/router/ \ No newline at end of file diff --git a/openspec/changes/add-console-ui/tasks.md b/openspec/changes/add-console-ui/tasks.md new file mode 100644 index 0000000..731bbce --- /dev/null +++ b/openspec/changes/add-console-ui/tasks.md @@ -0,0 +1,17 @@ +## 1. Implementation +- [x] 1.1 Create ProjectSelector component for project selection +- [x] 1.2 Create Console component for command input and log display +- [x] 1.3 Create DebugArea component for debugging information display +- [x] 1.4 Create MainView component to integrate all modules +- [x] 1.5 Create SidebarView component for sidebar display +- [x] 1.6 Update App.vue to implement two-column layout +- [x] 1.7 Update router configuration to use named views +- [x] 1.8 Implement responsive design for PC and mobile devices +- [x] 1.9 Implement console log management with 1000 record limit + +## 2. Urgent Fixes +- [x] 2.1 Update openspec documentation with all changes +- [x] 2.2 Fix scrolling issues in the page +- [x] 2.3 Optimize ProjectSelector by removing filter section +- [x] 2.4 Adjust layout: remove debug area and make console height adaptive +- [x] 2.5 Ensure PC right area is non-scrollable, mobile area is properly adjusted diff --git a/public/index.html b/public/index.html index 35a401d..f84beaa 100644 --- a/public/index.html +++ b/public/index.html @@ -7,6 +7,6 @@
- + \ No newline at end of file diff --git a/src/frontend/App.vue b/src/frontend/App.vue index 67b99db..1cdadcf 100644 --- a/src/frontend/App.vue +++ b/src/frontend/App.vue @@ -1,14 +1,57 @@ + + \ No newline at end of file diff --git a/src/frontend/components/Console.vue b/src/frontend/components/Console.vue new file mode 100644 index 0000000..d45155c --- /dev/null +++ b/src/frontend/components/Console.vue @@ -0,0 +1,604 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/components/DebugArea.vue b/src/frontend/components/DebugArea.vue new file mode 100644 index 0000000..8127d29 --- /dev/null +++ b/src/frontend/components/DebugArea.vue @@ -0,0 +1,892 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/components/ProjectSelector.vue b/src/frontend/components/ProjectSelector.vue new file mode 100644 index 0000000..8c7dc76 --- /dev/null +++ b/src/frontend/components/ProjectSelector.vue @@ -0,0 +1,278 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/index.html b/src/frontend/index.html new file mode 100644 index 0000000..f84beaa --- /dev/null +++ b/src/frontend/index.html @@ -0,0 +1,12 @@ + + + + + + BLS Project Console + + +
+ + + \ No newline at end of file diff --git a/src/frontend/router/index.js b/src/frontend/router/index.js index 5706918..6f3f042 100644 --- a/src/frontend/router/index.js +++ b/src/frontend/router/index.js @@ -1,17 +1,15 @@ import { createRouter, createWebHistory } from 'vue-router' -import LogView from '../views/LogView.vue' -import CommandView from '../views/CommandView.vue' +import MainView from '../views/MainView.vue' +import SidebarView from '../views/SidebarView.vue' const routes = [ { path: '/', - name: 'logs', - component: LogView - }, - { - path: '/commands', - name: 'commands', - component: CommandView + name: 'main', + components: { + sidebar: SidebarView, + main: MainView + } } ] diff --git a/src/frontend/views/MainView.vue b/src/frontend/views/MainView.vue new file mode 100644 index 0000000..ccdf79a --- /dev/null +++ b/src/frontend/views/MainView.vue @@ -0,0 +1,69 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/views/SidebarView.vue b/src/frontend/views/SidebarView.vue new file mode 100644 index 0000000..873e8a0 --- /dev/null +++ b/src/frontend/views/SidebarView.vue @@ -0,0 +1,27 @@ + + + + + \ No newline at end of file