Skip to content

feat(admin): vocab curation queue #1958

@cdcore09

Description

@cdcore09

Summary

Approve / reject / merge interface for the four controlled vocabularies — disciplines, skills, languages, organizations — that members can propose via inline editors on their dossier.

Requirements

  • Brainstorming → spec under docs/superpowers/specs/.
  • /admin/vocab — unified queue across the four tables, showing pending rows with proposer, proposed-on date, and current usage count.
  • Per-table list views: /admin/vocab/disciplines, /admin/vocab/skills, /admin/vocab/languages, /admin/vocab/organizations.
  • Detail view per term: accept / reject / merge-into-canonical actions, name + slug edit before approval, audit log inline.
  • Merge action mirrors the organization-merge pattern (set merged_into_id, repoint user_x rows, mark merged source as rejected).
  • Bulk-approve action for high-confidence batches (e.g., "approve all programming languages added in the last week"), super_admin gate.

Context

Foundation must ship first (#1956). Existing schema already supports status: pending | approved | rejected on every vocab table and merged_into_id on organizations.

Implementation Notes

  • Policy: canApproveVocab requires staff+.
  • The proposer (suggestedBy) should see status changes on their own dossier next time they load it (already works via dossier loader).
  • Merge UX should highlight near-duplicates (normalized-form match) so admins can resolve obvious dupes in one click.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions