feat(support-issue): customer close + InProgress status, list filters & InClarification#3950
Open
joshuakrueger-dfx wants to merge 7 commits into
Open
feat(support-issue): customer close + InProgress status, list filters & InClarification#3950joshuakrueger-dfx wants to merge 7 commits into
joshuakrueger-dfx wants to merge 7 commits into
Conversation
…ion state Extend GET /support/issue/list with clerk, createdFrom/createdTo filters and whitelisted orderBy/orderDir sorting. Add customer-visible SupportIssueInternalState.IN_CLARIFICATION mapped to SupportIssueState .IN_CLARIFICATION so customers see 'in internal clarification'.
Add PUT /support/issue/:id/close so customers can close their own issue; idempotent on already-closed issues.
…ping Add DB-free unit tests for getSupportIssueList query building (clerk filter, createdFrom/createdTo bounds, whitelisted orderBy with id tie-break) and exhaustive SupportIssueStateMapper coverage incl. the new customer-visible InClarification state.
Add SupportIssueInternalState.IN_PROGRESS mapped 1:1 to SupportIssueState.IN_PROGRESS so customers can distinguish a ticket that is actively being worked on from one still queued (Pending). Staff set it via the existing PUT /support/issue/:id endpoint.
…, return full thread, inclusive createdTo - closeIssue: log via SupportLogType.CUSTOMER (was SUPPORT, mislabeled the actor) - closeIssue: load messages so the response matches GET /:id instead of an empty thread - list: a date-only createdTo now includes the whole day (end-of-day bound) - add SupportIssueService.closeIssue tests (not-found, owner scoping, completion+log, idempotency, message loading)
Collaborator
Author
Review round (TaprootFreak)
Deferred (product calls, not blockers): auto-transition to |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Customer- and staff-facing improvements to the support-issue module — ticket lifecycle transparency and back-office list tooling.
Customer
PUT /support/issue/:id/close(OptionalJwtAuthGuard, ownership viagetIssueSearch). Sets state toCompleted, idempotent on already-closed issues, non-destructive (a new message reopens the ticket via the existingcreateMessageInternalflow).InProgressstatus — new customer-visibleSupportIssueState.IN_PROGRESS. PreviouslyCreated/Pending/OnHoldall collapsed toPending, so a customer could not tell "queued" from "actively being worked on". Now distinguishable.InClarificationstatus — customer-visibleSupportIssueState.IN_CLARIFICATION("in internal clarification").Staff
PUT /support/issue/:id(RoleGuard(SUPPORT)) already accepts the fullSupportIssueInternalStateenum, so staff can setInProgressandInClarificationout of the box.GET /support/issue/list:clerk,createdFrom/createdTo, plus whitelistedorderBy/orderDirsorting.State model
Created,Pending,OnHoldPendingInProgress(new)InProgress(new)InClarificationInClarificationCompleted/CanceledCompleted/CanceledSupportIssueStateMapperstays exhaustive ([key in SupportIssueInternalState]) — the compiler enforces a mapping for every internal state.Tests
support-issue-state.mapper.spec.ts— every internal state maps to a valid customer state;InProgressandInClarificationexplicitly asserted.support-issue.service.spec.ts— list filters.tsc: 0 errors. lint: clean.Notes
DFXswiss/services(separate repo) — the new statuses must be added there as selectable options; this PR is API + enum only.DFXswiss/services/ wallet already renderInProgress(badge color present); no API-side change required for that.