A service-work report, and a share target that fits every id

Featurekamo-shared-library
Shipped
September 2, 2026 at 5:02 AM UTC
Author
Kamo
Commit
478c51c

ServiceWorkReport is the tenth seed report and the one that makes row-level scope real rather than merely present. Commerce carries the platform's own/all pair — VIEW_OWN_SERVICE_WORK sits beside VIEW_SERVICE_WORK as a sibling — and a visit carries assignedMemberId, so a technician holding only the narrower right sees their own work while their supervisor sees the branch. One definition, two answers, and nothing invented for reporting. Without it SELF and TEAM would be untested paths in the part of this system it is least acceptable to leave untested. Rows are visits, not jobs: a job with three visits is three pieces of work, possibly by three people on three days, and collapsing them makes "who did what, when" unanswerable. ReportViewShare.targetId becomes target_key, a string. A member id is a 19-digit Long but a department and a role are UUIDs, so an INT8 column could hold half the share kinds — and the half it could not would have failed by silently matching nobody. Renamed rather than retyped because Hibernate's schema update adds a column and does not retype one; the old column was never written to. LeadPipelineConversionReport now applies the lead grid's own unassigned floor. Without it the report is a second, unaudited way to see the unassigned pool, and its group counts disagree with /leads for no visible reason.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing