feat(ideas): add idea creator, grant calls and applications

Implement the idea creator and application generator: idea status workflow, social canvas card, grant call windows with 409 when closed, and an LLM-backed idea assistant with offline fallback.
This commit is contained in:
Rafał Tyński
2026-10-04 03:13:45 +02:00
parent fd408b102b
commit 127ca92f63
15 changed files with 1089 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
using TarninaHub.Domain.Enums;
namespace TarninaHub.Domain.Rules;
public static class IdeaWorkflow
{
private static readonly IReadOnlyDictionary<IdeaStatus, IdeaStatus[]> Transitions =
new Dictionary<IdeaStatus, IdeaStatus[]>
{
[IdeaStatus.Draft] = [IdeaStatus.Submitted],
[IdeaStatus.Submitted] = [IdeaStatus.InReview],
[IdeaStatus.InReview] = [IdeaStatus.Accepted, IdeaStatus.Rejected],
[IdeaStatus.Accepted] = [],
[IdeaStatus.Rejected] = [],
};
public static bool CanTransition(IdeaStatus from, IdeaStatus to) =>
from == to || Transitions[from].Contains(to);
public static bool IsTerminal(IdeaStatus status) =>
Transitions[status].Length == 0;
}