这是一个基于 .NET MAUI 的多平台工作时间管理应用程序。
WorkTimeTracker 是一个工作时间追踪应用,具有以下核心功能:
- 工作和休息时间的计时管理
- 语音提醒功能
- 工作记录的数据库存储
- 每日工作时间统计
.
├── WorkTimeTracker.UI/ # MAUI 前端项目
│ ├── App.xaml # 应用程序入口
│ ├── MainPage.xaml # 主页面
│ ├── SchedulePage.xaml # 计划页面
│ ├── MauiProgram.cs # MAUI 程序配置
│ ├── Services/ # UI 服务层
│ │ └── ReminderService.cs # 提醒服务(UI层)
│ └── Platforms/ # 平台特定代码
├── WorkTimeTracker.Core/ # 核心业务逻辑(.NET Standard 2.0)
│ ├── Models/ # 业务模型
│ │ └── WorkRecord.cs # 工作记录模型
│ ├── Interfaces/ # 接口定义
│ │ ├── IWorkTimeService.cs # 工作时间服务接口
│ │ └── IWorkRecordRepository.cs # 工作记录仓库接口
│ └── Services/ # 核心服务实现
│ └── WorkTimeService.cs # 工作时间服务
├── WorkTimeTracker.Data/ # 数据访问层(.NET Standard 2.0)
│ ├── WorkRecordDatabase.cs # SQLite 数据库访问
│ └── Repositories/ # 仓库实现
│ └── WorkRecordRepository.cs # 工作记录仓库
├── WorkTimeTracker.Tests/ # 单元测试项目
├── Docs/ # 项目开发文档
│ ├── README.md # 文档说明
│ ├── PROJECT_COMPLETION_SUMMARY.md # 项目完成总结
│ ├── COMPILATION_FIXES.md # 编译修复日志
│ └── PLATFORM_CONFIG_SUMMARY.md # 平台配置总结
└── PackagingGuide.md # 打包指南
项目采用分层架构设计,实现了前后端分离:
- 目标框架: .NET Standard 2.0
- 职责: 包含业务逻辑、模型定义和接口
- 特点: 不依赖任何 UI 框架,纯业务逻辑
- 主要组件:
IWorkTimeService
: 工作时间管理服务接口WorkTimeService
: 核心业务逻辑实现WorkRecord
: 工作记录模型
- 目标框架: .NET Standard 2.0
- 职责: 数据持久化和仓库模式实现
- 特点: 实现了仓库模式,便于单元测试
- 主要组件:
WorkRecordDatabase
: SQLite 数据库访问IWorkRecordRepository
: 数据仓库接口WorkRecordRepository
: 仓库模式实现
- 目标框架: .NET 9.0 MAUI
- 职责: 用户界面和平台特定功能
- 特点: 仅处理 UI 逻辑和用户交互
- 主要组件:
MainPage
: 主界面ReminderService
: UI 层的提醒和语音服务
- 目标框架: .NET 8.0
- 职责: 单元测试和集成测试
- 特点: 可以独立测试核心业务逻辑
- 开始/结束工作: 通过
MainPage
的按钮控制工作状态 - 时间配置: 可配置工作时长和休息时长(默认 50 分钟工作,10 分钟休息)
- 实时更新: 每分钟更新一次当日工作时间显示
ReminderService
类提供:
- 工作/休息周期管理
- 语音提醒功能(使用 Text-to-Speech)
- 数据库记录更新
- 可配置的工作和休息时长
使用 SQLite 数据库存储工作记录:
WorkRecord
模型存储每日工作数据- 记录工作秒数、休息秒数和总工作时间
- 支持异步数据访问
- .NET MAUI: 跨平台应用框架 (Microsoft.Maui.Controls 9.0.80)
- SQLite: 本地数据库 (sqlite-net-pcl 1.9.172)
- CommunityToolkit.Maui: MAUI 社区工具包 (12.0.0)
- Plugin.LocalNotification: 本地通知插件 (12.0.1)
- Microsoft.Extensions.Logging: 日志记录 (9.0.6)
-
安装 .NET 9.0 SDK
-
安装 Visual Studio 2022 或 Visual Studio Code
-
安装 MAUI 工作负载:
dotnet workload install maui
dotnet run --project WorkTimeTracker.UI
dotnet publish -c Release -f net9.0-maccatalyst -o ../publish WorkTimeTracker.UI
详细的打包指南请参考 PackagingGuide.md。
在 MauiProgram.cs
中配置了以下服务:
ReminderService
: 单例服务,提供工作提醒功能WorkRecordDatabase
: 单例服务,管理 SQLite 数据库MainPage
: 主页面服务
存储每日工作记录的核心模型:
public class WorkRecord
{
public string Day { get; set; } // 日期(主键)
public int WorkSeconds { get; set; } // 工作秒数
public int RestSeconds { get; set; } // 休息秒数
public int TotalWorkSeconds { get; set; } // 总工作秒数
}
应用使用 Microsoft.Maui.Essentials.Preferences
存储配置:
WorkDuration
: 工作时长(分钟)RestDuration
: 休息时长(分钟)
- Android
- iOS
- macOS (Mac Catalyst)
- Windows
- 应用需要文本转语音权限用于语音提醒
- 数据库文件存储在应用数据目录中
- 配置信息持久化存储,应用重启后会恢复上次设置
项目的所有开发和修复相关文档都存放在 Docs/
文件夹中,包括:
- 项目完成总结 - 完整的修复过程和结果汇总
- 编译修复日志 - 详细的编译错误修复记录
- 平台配置总结 - 多平台发布配置说明
这些文档记录了项目从存在多个编译错误到完全可构建和测试通过的完整修复过程,可作为后续维护和学习的重要参考。
欢迎提交 Issue 和 Pull Request 来改进这个项目。
本项目使用适当的开源许可证。具体信息请查看项目中的 LICENSE 文件。