Files
luban_ui_internal/.github/instructions/prompt.instructions.md
jackqqq123 369fcbf403 feat: Luban.Core初步实现,提供能力:
- RegistService 装饰器实现服务注册
- 下载服务
- 文件服务
- 多线程方法
- 解压缩服务
2025-09-24 12:07:03 +08:00

147 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
applyTo: '**'
---
- 说中文
- 这是一个基于Avalonia的项目管理工程目标是让非程序员也能轻松使用luban管理配置表。
- 命令行是PowerShell使用分号作为命令分隔符
## 架构说明
### 🏗️ LubanHub.Core 核心能力库
LubanHub.Core 提供了项目的底层核心能力,**优先使用这些服务**来实现功能,避免重复造轮子:
#### 📥 下载服务 (ICoreDownloadService)
- **默认下载目录**: 系统用户数据目录的LubanHub子目录 (`%AppData%\LubanHub\Downloads`)
- **目录管理**: 获取/设置下载目录
- **进度追踪**: 实时下载进度、速度、文件名显示
- **取消支持**: 支持CancellationToken取消下载
- **使用场景**: Luban版本下载、模板下载、资源文件下载
#### 📁 文件管理服务 (ICoreFileService)
- **文件操作**: 创建、删除、复制、移动文件
- **目录操作**: 创建、删除、遍历目录
- **异步读写**: ReadAllTextAsync/WriteAllTextAsync
- **信息获取**: FileInfo/DirectoryInfo
- **使用场景**: 配置文件操作、项目文件管理、模板文件处理
#### ⚙️ 进程调用服务 (ICoreProcessService)
- **同步执行**: 等待进程完成并获取输出
- **异步执行**: 实时获取stdout/stderr输出
- **后台进程**: 启动但不等待的进程
- **进程管理**: 检查进程状态、杀死进程
- **使用场景**: 调用Luban命令行、Git操作、外部工具集成
#### 🗜️ 解压缩服务 (ICoreCompressionService)
- **ZIP支持**: 完整的ZIP解压缩功能
- **进度追踪**: 解压进度回调
- **格式检测**: 自动识别压缩格式
- **扩展支持**: 预留RAR/7Z接口需第三方库
- **使用场景**: Luban安装包解压、模板包解压、资源包处理
#### 🔧 依赖注入集成
```csharp
// 在App.axaml.cs中已配置
services.AddCoreServices(); // 自动注册所有Core服务
```
#### ⚠️ 扩展原则
- **优先使用**: 实现新功能时首先检查Core是否已提供相关服务
- **必要扩展**: 只有在Core无法满足需求时才考虑扩展Core
- **接口设计**: 新增Core功能需要定义接口保持架构一致性
- **日志集成**: 所有Core服务已集成Microsoft.Extensions.Logging
## UI设计规范
### 🎨 主题兼容性
- **深色模式支持**: 所有UI元素必须在深色主题下清晰可见具有足够的对比度
- **浅色模式支持**: 所有UI元素必须在浅色主题下保持良好的可读性和视觉效果
- **动态主题切换**: 使用DynamicResource绑定支持运行时主题切换
- **颜色资源化**: 避免硬编码颜色值,统一使用主题资源字典中的颜色定义
### 🎯 交互状态设计
- **主要操作按钮**: 使用主题蓝色系,在两种模式下都要突出显示
- **成功/确认状态**: 使用绿色系,表示积极操作
- **警告状态**: 使用黄色系,提醒用户注意
- **错误/删除状态**: 使用红色系,表示危险操作
- **悬停和按下状态**: 提供清晰的视觉反馈,确保在两种主题下都有足够的对比度
### 📝 文字层级
- **主要文字**: 使用主题的主要文字颜色,确保最佳可读性
- **次要文字**: 使用稍浅的颜色,但仍保持良好的可读性
- **占位符文字**: 使用更浅的颜色,明确区分占位符和实际内容
- **禁用文字**: 使用最浅的颜色,明确表示不可用状态
### 🔘 圆角规范
- **按钮圆角**: `4px`
- **输入框圆角**: `4px`
- **卡片圆角**: `5px`
- **列表项圆角**: `3px`
### 📏 间距规范
- **小间距**: `5px`
- **标准间距**: `10px`
- **中等间距**: `15px`
- **大间距**: `20px`
- **页面边距**: `20px`
- **按钮内边距**: 水平`15px` 垂直`8px`
- **导航按钮内边距**: 水平`20px` 垂直`15px`
### 🎭 动画规范
- **过渡时间**: `0.2s` (200ms)
- **缓动函数**: `ease-out`
- **支持的过渡**: 背景色、前景色、透明度
### 📱 组件规范
- **导航栏宽度**: `200px`
- **最小窗口尺寸**: 宽度`1000px` 高度`600px`
- **设计尺寸**: 宽度`1200px` 高度`800px`
- **按钮最小高度**: `36px`
- **输入框最小高度**: `32px`
### 🎪 图标使用
- 使用Emoji作为图标: 📚📁📦📱⚙️🎮📊🔧🤖➕🔄📂🌐等
- 图标大小: 导航按钮中正常大小,卡片中`40px`
### 🖱️ 交互反馈
- 所有可点击元素必须有悬停状态
- 按钮支持按下状态反馈
- 输入框支持焦点状态
- 列表项支持选中和悬停状态
- 过渡动画让交互更流畅
## 开发指导
### 📋 功能实现流程
1. **需求分析**: 明确功能需求和用户场景
2. **Core检查**: 检查LubanHub.Core是否已提供相关服务
3. **服务利用**: 优先使用Core服务实现功能逻辑
4. **UI设计**: 按照设计规范创建用户界面
5. **进度显示**: 长时间操作使用底部进度条显示状态
6. **错误处理**: 合理的异常处理和用户提示
### 🎯 常见场景示例
- **文件下载**: 使用ICoreDownloadService进度显示在底部
- **Luban调用**: 使用ICoreProcessService执行命令行
- **配置管理**: 使用ICoreFileService读写配置文件
- **安装包处理**: 使用ICoreCompressionService解压
- **目录选择**: 集成系统文件对话框需要时扩展Core
### 🔄 服务扩展指南
当需要新功能且Core无法满足时
1.`LubanHub.Core/Interfaces`添加接口定义
2.`LubanHub.Core/Services`添加实现类
3.`ServiceCollectionExtensions`中注册服务
4. 更新本文档说明新增能力
5. 在App层通过依赖注入使用新服务
### 📊 UI状态管理
- **ViewModelBase**: 所有ViewModel继承此基类
- **属性绑定**: 使用SetProperty方法通知UI更新
- **命令模式**: 使用RelayCommand处理用户交互
- **进度显示**: 使用DownloadProgressViewModel显示长时间操作
### 🎨 主题和样式
- **主题切换**: 使用ThemeManager管理深色/浅色主题
- **资源绑定**: 所有颜色使用DynamicResource绑定
- **样式复用**: 在Styles.axaml中定义通用样式
- **响应式**: 支持运行时主题切换