Organisationsvorlagen: ein ganzes Haus als importierbare Datei (#691)

- Core/Organisation/OrgTemplate: format, export, parse, structural checks.
  Export empties every credential (nested, name variants) and names it;
  a template that carries one is refused.
- OrgAdministration: ExportTemplate, PreviewTemplate (problems, warnings,
  every text in full), ImportTemplateAsync - only with confirmation, units
  before agents, own workspace per unit, doctrines, model and budget factor
  overridable, templateOrigin on every unit and agent.
- Endpoints GET /organisation/template, POST .../preview, POST .../import;
  templates card in the organisation view.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-10-01 12:37:18 +02:00
co-authored by Claude Opus 5.5
parent 11465f3d74
commit 706b5cfd9e
14 changed files with 880 additions and 3 deletions
@@ -28,6 +28,13 @@ public sealed class AgentConfig
[JsonPropertyName("previousUnitId")]
public string? PreviousUnitId { get; set; }
/// <summary>
/// #691: The template the agent came from. Its Identity and Soul were written by someone
/// else — they are prompts, and where they came from must stay visible.
/// </summary>
[JsonPropertyName("templateOrigin")]
public string? TemplateOrigin { get; set; }
[JsonPropertyName("model")]
public string Model { get; set; } = "anthropic/claude-sonnet-4-5";
@@ -70,6 +70,10 @@ public sealed class UnitConfig
/// </summary>
[JsonPropertyName("votes")]
public UnitVotes? Votes { get; set; }
/// <summary>#691: The template the unit came from — its texts and rules are someone else's.</summary>
[JsonPropertyName("templateOrigin")]
public string? TemplateOrigin { get; set; }
}
/// <summary>