Add HelpServ: a help-desk ticket queue

Users open tickets with REQUEST (or HELPME); the queue is event-sourced
and, because a request is an event, the audit feed announces it to staff
and records it in the searchable log — so OperServ LOGSEARCH finds a ticket
by any word, the same trail as reports. A user can CANCEL their own open
ticket. Operators work the queue: LIST [ALL], VIEW, TAKE (claim), NEXT
(claim the oldest unassigned), CLOSE. Filing is rate-limited. Opt-in.

That completes the six third-party modules — all interconnected: they
share the account/channel/oper identity, the event-sourced store, and the
one audit/incident trail.
This commit is contained in:
Jean Chevronnet 2026-07-14 04:39:45 +00:00
parent 06227e73da
commit a47dd6bda3
No known key found for this signature in database
9 changed files with 385 additions and 2 deletions

View file

@ -1,5 +1,5 @@
[workspace]
members = ["api", "inspircd", "chanserv", "nickserv", "example", "botserv", "memoserv", "statserv", "hostserv", "operserv", "diceserv", "infoserv", "reportserv", "groupserv", "chanfix"]
members = ["api", "inspircd", "chanserv", "nickserv", "example", "botserv", "memoserv", "statserv", "hostserv", "operserv", "diceserv", "infoserv", "reportserv", "groupserv", "chanfix", "helpserv"]
[package]
name = "fedserv"
@ -23,6 +23,7 @@ fedserv-infoserv = { path = "infoserv" }
fedserv-reportserv = { path = "reportserv" }
fedserv-groupserv = { path = "groupserv" }
fedserv-chanfix = { path = "chanfix" }
fedserv-helpserv = { path = "helpserv" }
tokio = { version = "1", features = ["net", "io-util", "rt-multi-thread", "macros", "time", "sync", "process"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"