feat(publishers): track inactive publisher status#208
Merged
Conversation
Persist Member.inactiveAt for publishers who report no preaching for 6 consecutive monthly reports. Auto-set on activity writes and silently cleared when an hours report arrives; manual toggle exposed on the publisher view/edit pages. Inactive publishers are hidden from the public-facing display board (groups + pioneers) and excluded from publisher stats, but remain fully visible to admins and elders.
Import ordering and minor formatting picked up by pnpm build:format. No behavior changes.
Apply post-review refinements: swap Pause/Play for ZapOff/Zap to disambiguate from the adjacent mark-as-left button, document the leftAt/inactiveAt precedence in the evaluator, fix mobile badge wrap and hover state on inactive activity rows, and include inactiveAt in both the congregation NDJSON export/import and the GDPR per-user export so the flag survives backup/restore.
…d round-trip Adds two integration tests (display-board filter + activity→evaluator end-to-end), unit tests for the manual setMemberInactive/setMemberActive services, a regression guard on the publisher-stats inactive filter, and extends the data-transfer round-trip to assert inactiveAt survives export+import.
Extend the product publishers guide and feature overview with the new inactive lifecycle state (auto-set after 6 consecutive missed reports, silent clear on hours report, manual override). Update the architecture doc's Member description and audit-actions table to cover inactiveAt and the new PublisherInactivated/PublisherReactivated audit entries.
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
Member.inactiveAtso publishers who report no preaching for 6 consecutive monthly reports are flagged. The evaluator auto-sets on activity writes and silently clears when an hours report arrives; elders can also toggle manually from the publisher view/edit pages.Test plan
pnpm test:unit— 1162 tests passing (incl. 9 evaluator units, 3 setMemberInactive, 3 setMemberActive, 1 stats filter guard).pnpm test:integration— 182 tests passing (incl. new display-board filter + activity→evaluator end-to-end + extended data-transfer round-trip assertinginactiveAtsurvives export+import).pnpm test:lintandpnpm test:typecheck— clean.all.countdrops by one. File an hours report → confirm they reappear silently.Inactifbadge surfaces next to the H1 (desktop) and wraps cleanly on mobile.inactiveAtis preserved.