feat: Luban.Core初步实现,提供能力:

- RegistService 装饰器实现服务注册
- 下载服务
- 文件服务
- 多线程方法
- 解压缩服务
This commit is contained in:
jackqqq123
2025-09-24 12:07:03 +08:00
parent 6ec2a804ba
commit 369fcbf403
29 changed files with 2024 additions and 11 deletions

View File

@@ -3,6 +3,52 @@ 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设计规范
@@ -61,4 +107,41 @@ applyTo: '**'
- 按钮支持按下状态反馈
- 输入框支持焦点状态
- 列表项支持选中和悬停状态
- 过渡动画让交互更流畅
- 过渡动画让交互更流畅
## 开发指导
### 📋 功能实现流程
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中定义通用样式
- **响应式**: 支持运行时主题切换