主要成果:
- 新增独立插件 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
39 lines
1.2 KiB
C#
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;
|
|
}
|