Files
broccolini-bot/docs/features/PROPOSAL.md
2026-02-17 21:49:58 -06:00

3.6 KiB
Raw Blame History

Broccolini Bot Roadmap & Proposal

Short proposal and possible next steps for the Broccolini Bot ticketing system. Discord + Gmail + MongoDB remain the core; any extension is additive.


Current State

  • Email → Discord: Gmail poll creates ticket channels/threads; replies sync back to Gmail.
  • Discord-first: Panels, slash commands, buttons, modals, context menus for full ticket lifecycle (claim, close, escalate, tag, priority, transfer, move, saved responses).
  • MongoDB: Single data store for tickets, transcripts, tags, close requests, guild settings, and (optional) account info.
  • Automation: Auto-close, reminders, auto-unclaim, claim timeout; all configurable via .env.
  • Security: HTML escaping in outbound emails; test env workflow; optional healthcheck host binding.

No external ticketing API (e.g. Zammad) is used; the bot is self-contained.


Possible Next Steps

1. Read-only API layer

  • Expose ticket and metadata via a read-only HTTP API (e.g. alongside the bot or a small separate service).
  • Endpoints: list/filter tickets, ticket by ID, “my tickets” by Discord ID, tags, guild settings.
  • Enables dashboards, mobile tools, or a Support Cockpit (bOSScord-style overlay) without changing Discord or bot behavior.
  • Optional: use something like Directus on top of MongoDB for instant REST/GraphQL and admin UI.

2. Ticket routing & queues

  • Derive a queue (or routing bucket) per ticket from game detection (GAME_LIST), subject/body keywords, and existing tags.
  • Store queue on the ticket document; show it in Discord (e.g. in embeds or channel name) and in any future API/UI.
  • Enables “Network”, “Billing”, “Mod Help”, “Game X” views without changing how staff use Discord.

3. Incident & problem tracking

  • Incident: one-off “something broke” ticket.
  • Problem: recurring issue; link multiple incidents, track root cause, workaround, and fix status.
  • Optional new commands or buttons to “Link to problem” / “Create problem from ticket” and optional API fields.
  • Internal KB (e.g. Wiki.js): link from problems/tickets to articles; optional /kb search in Discord.
  • PM tool (Plane, Focalboard, Taiga): “Create PM task from ticket” and link ticket ↔ task.
  • Broccolini Bot stays the source of truth for tickets; KB and PM are linked data.

5. bOSScord / Support Cockpit

  • Web (later desktop) client that reads from the API and MongoDB.
  • Richer views: queues, SLA-style status, “whos viewing this ticket”, virtual display names, links to KB and PM.
  • All writes and communication remain in Discord; the client is view/routing only.

6. GitHub / GitLab (optional)

  • From a problem or PM task: create issue/PR with context.
  • Webhooks to update problem/task when issues close or PRs merge.

Principles

  • Discord + Broccolini Bot are canonical. New features augment, they dont replace, the current flow.
  • API-first for new UIs. Any dashboard or cockpit consumes a read-only (or narrowly write) API; no direct DB access from frontends.
  • Config and secrets stay in .env. New services get their own env or reuse existing vars where it makes sense.
  • MongoDB remains the primary store. New collections or fields as needed; no second database unless justified.

No Deadlines

This document is a proposal and idea list. Work can proceed in small steps: e.g. add a read-only ticket API, then add queue derivation, then plug in a simple dashboard or bOSScord.

For a fuller platform vision (bOSScord, queues, incidents/problems, KB, PM), see the parent repos bOSScord proposal if present.