feat(career): theme polish, rich-text bullets, entry ordering, outline API
Phase 4.5 backend enablers. - Themes (priority 3): AtsFriendly flag on single-column themes (surfaced in GET /api/cv/themes), print-quality page-break rules (entries never split across a page; headings stay with content; widow/orphan control), darkened the creative sidebar for AA contrast. - Rich text (priority 1): bullets/summary support **bold**, *italic*, __underline__, [text](url) via a safe inline pass — everything is HTML-escaped first, so no user tag can survive; only the whitelist emits markup. - Entry ordering (priority 1): CvSectionSetting.ItemOrder reorders entries within a section by ItemKey, never touching the master profile. - Outline API: GET /api/cv/outline returns the master profile as sections+entries with ItemKeys, so the Content tab can render editable per-item rows. - 3 new tests (22 total in the builder suite). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,10 @@ public sealed class CvSectionSetting
|
||||
public string Key { get; set; } = string.Empty; // summary|skills|experience|education|projects|certifications|languages|interests|links|custom:<k>
|
||||
public bool Hidden { get; set; }
|
||||
public string? Title { get; set; } // renamed heading
|
||||
// Explicit entry order for this section, as a list of item ItemKeys. Entries not listed keep their
|
||||
// master order and come last. Null => master profile order. Lets a variant reorder entries without
|
||||
// touching the master profile.
|
||||
public List<string>? ItemOrder { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CvItemOverride
|
||||
|
||||
Reference in New Issue
Block a user