| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- namespace Admin.NET.Plugin.AiDOP.Infrastructure.S8;
- /// <summary>
- /// G-06 最小问题台账三档状态短码 ↔ 主链状态集合的静态映射。
- /// 口径来源《G-06 最小问题台账》§五;不落库、不可配置、不支持运行期追加;
- /// 短码白名单固定为 discovered / processing / closed,留空视为全量;
- /// hold / suspend / pending / all 等一律视为非法参数。
- /// </summary>
- public static class S8IssueLedgerStates
- {
- /// <summary>台账状态短码:已登记但尚未被接单。</summary>
- public const string Discovered = "discovered";
- /// <summary>台账状态短码:已进入处置链路。</summary>
- public const string Processing = "processing";
- /// <summary>台账状态短码:终局(CLOSED / REJECTED)。</summary>
- public const string Closed = "closed";
- /// <summary>短码 → 主链状态集合。挂起不存在,hold / suspend / pending 均视为非法参数。</summary>
- private static readonly IReadOnlyDictionary<string, IReadOnlyList<string>> ShortCodeToStatuses =
- new Dictionary<string, IReadOnlyList<string>>(StringComparer.Ordinal)
- {
- [Discovered] = new[] { "NEW" },
- [Processing] = new[] { "ASSIGNED", "IN_PROGRESS", "PENDING_VERIFICATION", "ESCALATED", "RESOLVED" },
- [Closed] = new[] { "CLOSED", "REJECTED" }
- };
- /// <summary>由主链状态解析台账短码;未归类返回 null。</summary>
- public static string? TryGetShortCode(string? status)
- {
- if (string.IsNullOrWhiteSpace(status)) return null;
- return status switch
- {
- "NEW" => Discovered,
- "ASSIGNED" or "IN_PROGRESS" or "PENDING_VERIFICATION" or "ESCALATED" or "RESOLVED" => Processing,
- "CLOSED" or "REJECTED" => Closed,
- _ => null
- };
- }
- /// <summary>由台账短码获取对应主链状态集合;未知短码返回空集合。</summary>
- public static IReadOnlyList<string> GetStatuses(string? shortCode)
- {
- if (string.IsNullOrWhiteSpace(shortCode)) return Array.Empty<string>();
- return ShortCodeToStatuses.TryGetValue(shortCode, out var statuses)
- ? statuses
- : Array.Empty<string>();
- }
- /// <summary>三档短码对应的全部主链状态集合(便于查询层复用)。</summary>
- public static IReadOnlyList<string> AllStatuses { get; } = new[]
- {
- "NEW",
- "ASSIGNED", "IN_PROGRESS", "PENDING_VERIFICATION", "ESCALATED", "RESOLVED",
- "CLOSED", "REJECTED"
- };
- }
|