Files
Academic-Affairs-System/src/Jiaowu.Api/Domain/System/PluginPackageRelease.cs
T
biss 05683e502a 第二阶段已完成:统一插件平台已从“内置功能开关”扩展为可安装、签名校验、版本激活和回滚的插件系统。
主要成果:
- 新增独立插件 SDK:[PluginContracts.cs (line 11)](E:/jiaowu/src/Jiaowu.Plugin.Abstractions/PluginContracts.cs:11)
- 支持 RSA-PSS/SHA-256 签名插件包、Host API 兼容性和 ZIP 安全检查:[PluginPackageValidator.cs (line 14)](E:/jiaowu/src/Jiaowu.Api/Infrastructure/Plugins/PluginPackageValidator.cs:14)
- 支持暂存、待激活、重启装载、失败记录、版本回滚:[PluginPackageService.cs (line 32)](E:/jiaowu/src/Jiaowu.Api/Infrastructure/Plugins/PluginPackageService.cs:32)
- 插件可注册控制器、服务、数据库迁移、后台任务和事件处理器
- 外部插件 API 统一使用 /api/plugin-extensions/{pluginId},并受启用状态中间件控制
- 插件中心新增 ZIP/SIG 上传、状态展示、激活、回滚和删除功能:[PluginsView.vue (line 212)](E:/jiaowu/web/src/views/PluginsView.vue:212)
- 提供可运行示例插件:[SamplePlugin.cs (line 10)](E:/jiaowu/samples/Jiaowu.SamplePlugin/SamplePlugin.cs:10)
- 提供打包签名脚本:[package-plugin.ps1](E:/jiaowu/scripts/package-plugin.ps1)
- 完整开发文档:[plugin-sdk.md (line 1)](E:/jiaowu/docs/plugin-sdk.md:1)
- 系统版本已调整为 3.0.0-beta1
2026-10-01 10:22:46 +08:00

39 lines
1.2 KiB
C#

using Jiaowu.Api.Domain.Common;
namespace Jiaowu.Api.Domain.System;
public enum PluginPackageStatus
{
Staged,
PendingActivation,
Active,
Superseded,
Failed
}
public sealed class PluginPackageRelease : EntityBase
{
public required string PluginId { get; set; }
public required string Name { get; set; }
public required string Description { get; set; }
public required string Category { get; set; }
public required string Version { get; set; }
public required string PublisherId { get; set; }
public required string HostApiVersion { get; set; }
public required string Sha256 { get; set; }
public required string ManifestJson { get; set; }
public required byte[] PackageContent { get; set; }
public required byte[] Signature { get; set; }
public PluginPackageStatus Status { get; set; }
public string? CreatedByUserId { get; set; }
public DateTime? ActivationRequestedAt { get; set; }
public string? FailureMessage { get; set; }
}
public sealed class PluginMigrationHistory : EntityBase
{
public required string PluginId { get; set; }
public required string MigrationId { get; set; }
public DateTime AppliedAt { get; set; } = DateTime.UtcNow;
}