Skip to content

Repository files navigation

星弦的调度中心(AvaloniaSSWorkstation)

浙江大学星弦科幻协会的工作调度中心——从 Python 版迁移到 C#/.NET + Avalonia 的桌面应用。管理干员、待办与工作记录,支持自动分配、临时/永久弃用、CSV 导入导出。

本项目是 Star_string_workstation(Python NiceGUI + SQLAlchemy/SQLite)的 Avalonia 桌面迁移版。 功能验收以《功能说明文档.md》为基线,技术选型与迁移动机详见《迁移选型文档.md》(见原仓库)。


迁移动机

原系统(Python/NiceGUI 版本)存在三大痛点,本次迁移逐一解决:

痛点 表现 迁移后的对策
P1 配置运行繁琐 需自备 Python 环境、venv、装依赖才能启动 self-contained 发布,单 exe 双击即用,端用户零环境
P2 库依赖脆弱 NiceGUI 等库"版本一变就炸",无锁定感 C# 编译期静态链接 + packages.lock.json 锁版本,产物自含
P3 设计不当 架构不清晰,改一处易引全局副作用 MVVM 分层,业务逻辑独立成服务层,可单元测试

技术选型结论:C#/.NET + Avalonia 桌面应用(self-contained 单 exe)、MVVM 分层、DataGrid 承载三张表、SQLite 持久化、服务层原样重建分配算法与业务不变式。


技术栈

技术
UI Avalonia 12.1 + CommunityToolkit.Mvvm 8.4(XAML / MVVM / Fluent 主题)
数据 Microsoft.Data.Sqlite 10 + Dapper 2.1(SQLite,UoW 显式事务)
CSV CsvHelper 33.1
测试 xUnit(单元 + 集成 + ViewModel)

依赖方向(架构守卫测试固化):UI→Core、UI→Infrastructure、Infrastructure→Core;Core 零外部依赖


功能总览

  • 六页导航:概览 / 干员 / 待办 / 分配 / 记录 / 设置
  • 三张表管理:干员 / 待办 / 记录,DataGrid 排序、批量多选、行内操作按钮
  • 分配:自动分配(5 条业务规则,预览后确认)/ 手动指定 / 手动导入
  • 弃用闭环:临时弃用(默认 +7 天)/ 永久弃用 / 到期自动启用,work_count 增减不变式
  • 记录:手动打标签、删除时回退工作量
  • CSV 可运维性:严格表头契约、四种编码检测、"清空+导入"单事务、导出
  • 设置页:数据计数、重建表、清空、导入导出、存储位置
  • 单文件发布:约 50MB 单 exe,含应用图标

解决方案结构

AvaloniaSSWorkstation.slnx
├── AvaloniaSSWorkstation/                 # Avalonia 12.1 UI(Views/ViewModels/导航/DI/提示条/确认对话框)
├── AvaloniaSSWorkstation.Core/            # 实体、领域常量、领域异常、仓库接口、UoW、业务服务(纯 .NET)
├── AvaloniaSSWorkstation.Infrastructure/  # SQLite(Dapper)、CSV(CsvHelper)、文件系统
├── AvaloniaSSWorkstation.Tests/           # 单元 + 集成 + ViewModel 测试(xunit)
├── docs/                                  # 各里程碑决策记录与验收清单
└── tools/seed-data/                       # 人工验收用测试数据工具(独立于 slnx)

构建与测试

# 还原
dotnet restore AvaloniaSSWorkstation.slnx

# 构建
dotnet build AvaloniaSSWorkstation.slnx -c Release

# 测试(160+ 用例,0 警告 0 错误基线)
dotnet test AvaloniaSSWorkstation.slnx -c Release

发布(单文件 exe)

dotnet publish AvaloniaSSWorkstation/AvaloniaSSWorkstation.csproj -c Release -r win-x64 --self-contained true \
  -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true \
  -p:DebugType=None -p:DebugSymbols=false -p:EnableCompressionInSingleFile=true \
  -o artifacts/publish-win-x64

首次运行自动在 %LOCALAPPDATA%/AvaloniaSSWorkstation/data/scheduler.db 建库。


里程碑状态

阶段 内容 状态
M0 架构就绪(恢复/构建/测试/发布 spike) ✅ 完成
M1 领域模型与数据库纵向切片(三表/schema v1/唯一约束/UoW) ✅ 完成
M2 业务服务与不可变规则(自动分配 5 规则/work_count 不变式) ✅ 完成
M3 应用壳、导航与共性交互(DI/六页导航/主题/提示条/确认框) ✅ 完成
M4 干员管理闭环(DataGrid 多选/弹窗/启弃用/一键全部启用) ✅ 完成
M5 待办、分配与记录闭环(自动预览确认/手动指定/手动导入/记录回退) ✅ 完成
M6 设置、CSV 与数据可运维性(CSV 契约/编码检测/单事务导入导出/设置页) ✅ 完成
M7 稳定化、发布与切换 ⏳ 待批准

License

MIT © 浙江大学星弦科幻协会

About

星弦幻协的工作分派桌面软件

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages