- importZip now updates titles/positions of existing chapters and sections and
removes sections/articles of archived chapters that are missing in the archive
(so restructured material no longer leaves stale sections behind); removed
count is reported in ContentImportResult and in the admin flash message
- docs: note about import semantics in the class diagram and sequences
- academic: POST /api/v1/content/reorder applies a full tree arrangement in one
request — chapter order, section order and section->chapter moves, article
order and article->section moves (positions and parent ids updated)
- web: POST /admin/content/reorder accepts the tree from JS (CSRF via query
param), calls the gateway with the admin token
- /learn admin view: draggable handles (⠿) for chapters, sections and articles;
drop before/after to reorder, drop into a chapter/section to move; visual
indicators; structure is collected from DOM and saved, then page reloads
- docs: class diagram method + new sequence diagram for drag & drop