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
@@ -155,3 +155,61 @@ internal sealed class IdRow
{
[CborProperty("id")] public string Id { get; set; } = string.Empty;
}
internal sealed class IdeaRow
{
[CborProperty("id")] public string Id { get; set; } = string.Empty;
[CborProperty("title")] public string Title { get; set; } = string.Empty;
[CborProperty("description")] public string Description { get; set; } = string.Empty;
[CborProperty("author")] public string Author { get; set; } = string.Empty;
[CborProperty("status")] public string Status { get; set; } = string.Empty;
[CborProperty("updated_at")] public DateTimeOffset? UpdatedAt { get; set; }
}
internal sealed class IdeaCardRow
{
[CborProperty("id")] public string Id { get; set; } = string.Empty;
[CborProperty("idea")] public string Idea { get; set; } = string.Empty;
[CborProperty("essence")] public string Essence { get; set; } = string.Empty;
[CborProperty("audience")] public string Audience { get; set; } = string.Empty;
[CborProperty("stage")] public string Stage { get; set; } = string.Empty;
}
internal sealed class GrantCallRow
{
[CborProperty("id")] public string Id { get; set; } = string.Empty;
[CborProperty("name")] public string Name { get; set; } = string.Empty;
[CborProperty("opens_at")] public DateTimeOffset OpensAt { get; set; }
[CborProperty("closes_at")] public DateTimeOffset ClosesAt { get; set; }
[CborProperty("status")] public string Status { get; set; } = string.Empty;
[CborProperty("external_id")] public string? ExternalId { get; set; }
}
internal sealed class ApplicationRow
{
[CborProperty("id")] public string Id { get; set; } = string.Empty;
[CborProperty("grant_call")] public string GrantCall { get; set; } = string.Empty;
[CborProperty("idea")] public string Idea { get; set; } = string.Empty;
[CborProperty("content")] public Dictionary<string, string?> Content { get; set; } = [];
[CborProperty("status")] public string Status { get; set; } = string.Empty;
[CborProperty("created_at")] public DateTimeOffset CreatedAt { get; set; }
}