sync: auto-sync from GURU-BEAST-ROG at 2026-05-22 11:46:56

Author: Mike Swanson
Machine: GURU-BEAST-ROG
Timestamp: 2026-05-22 11:46:56
This commit is contained in:
2026-05-22 11:46:57 -07:00
parent e0688c6654
commit 3ad96ac7b9
4 changed files with 123 additions and 2 deletions

View File

@@ -50,6 +50,12 @@ Create, update, close, comment on, and bill tickets in Syncro PSA.
**Always pass `"taxable": false` explicitly on labor line items.** Labor products are configured with `taxable: false` in Syncro, but `add_line_item` via API does not inherit the product's taxable setting — it posts the line item as `taxable: true` regardless. Always include `"taxable": false` in the payload to match the product's configured value.
**Appointment dates — always verify day-of-week before the preview.** Day-of-week math is easy to get wrong. Before including any appointment date in a preview, run a live check and display the full day name alongside the date (e.g. "Saturday 2026-05-23", never just "2026-05-23"). The user confirms the day name at the preview step — if the name is wrong, the date is wrong. Incident: #32312 booked Sunday May 24 instead of Saturday May 23 (2026-05-21). Reported by Winter.
```bash
py -c "import datetime; d = datetime.date(YYYY, M, D); print(d.strftime('%A %Y-%m-%d'))"
```
**After every write operation, post a summary + link to #bot-alerts.** Every ticket created, updated, closed, or commented, every billing run, and every customer created posts a one-line alert to the team's live feed in Discord. This runs AFTER the write succeeds (never before — no alert for an action that didn't happen) and applies regardless of who runs the skill or where (workstation or the Discord bot). Read-only commands (list / view / search) post nothing. Full format, link mapping, and helper call are in "Post to #bot-alerts" below.
## Implementation
@@ -342,8 +348,8 @@ Do Not Email: <yes/no>
APPOINTMENT (omit section if no appointment)
-----------
Type: <type name>
Start: <start_at>
End: <end_at> (90 min)
Start: <Weekday YYYY-MM-DD> at <HH:MM AM/PM> ← day name verified with py datetime
End: <Weekday YYYY-MM-DD> at <HH:MM AM/PM> (90 min default)
Location: <location or blank>
ASSET: <asset name or none>

View File

@@ -43,6 +43,7 @@
- [Syncro — warranty has its own product, never patch dollar amounts](feedback_syncro_warranty_product.md) — Warranty/no-charge work uses product `1049360` (Labor- Warranty work, $0). Don't fake a free line by patching `price_retail` or neutralizing a regular product — pick the correct product and re-run. Hit on #32225 2026-05-06.
- [SQL instance role — verify by connections, not name](feedback_sql_instance_role_by_connection.md) — Standard installed under default `SQLEXPRESS` instance name is real. Prove role with `sys.dm_exec_sessions` + `Get-NetTCPConnection -OwningProcess` before recommending stop/uninstall. IMC1 2026-05-05/06 near-miss.
- [Syncro — confirm appointment owner explicitly](feedback_syncro_appointment_owner.md) — When creating tickets with appointments, always ask "who is the appointment owner?" in the preview. Don't auto-default to ticket's assigned tech. Don't add additional attendees without explicit confirmation. Howard caught on Kittle ticket #32263 2026-05-08.
- [Syncro — verify appointment date day-of-week](feedback_syncro_appointment_date_check.md) — Always compute and display the day name (e.g. "Saturday 2026-05-23") in the ticket preview — never just the numeric date. Verify with `py -c "import datetime; ..."` before posting. Wrong-day incident on #32312 2026-05-21 (Sunday booked instead of Saturday). Reported by Winter.
- [Clear-RecycleBin fails silently as SYSTEM](feedback_clear_recyclebin_system_context.md) — RMM-dispatched cleanup scripts cannot use `Clear-RecycleBin -Force`; the cmdlet uses Shell COM and silently no-ops without an interactive desktop. Enumerate `C:\$Recycle.Bin\<SID>\*` directly. Hit on ASSISTMAN-PC 2026-05-08.
- [Cascades — ask security group on user creation](feedback_cascades_user_security_group.md) — When creating any Cascades user, always ask which security group(s) they go in. Deliberate per-user decision; an OU→group auto-mirror was explicitly declined 2026-05-14. OU = sync scope; group = access/CA decision.

View File

@@ -0,0 +1,25 @@
# Syncro — Verify appointment date day-of-week before creating
**Rule:** Before creating any Syncro appointment, always verify that the computed date
actually falls on the intended day of the week.
**Why:** Day-of-week math is easy to get wrong. In the incident that prompted this rule
(2026-05-21, ticket #32312), "Saturday" was computed as May 24 — which is actually a Sunday.
The appointment landed on the wrong day and didn't appear where Winter expected it on the calendar.
**How to verify:**
Use Python or Bash to print the weekday before including it in the preview:
```bash
py -c "import datetime; d = datetime.date(2026, 5, 24); print(d.strftime('%A %Y-%m-%d'))"
# Output: Sunday 2026-05-24 ← would have caught the error
```
Or include the day name in the TICKET PREVIEW and require explicit user confirmation
that the day-of-week matches their intent.
**Catch:** Always show `Day YYYY-MM-DD` (e.g., "Saturday 2026-05-23") in the preview —
never just the numeric date — so the user can verify at a glance.
Reported by Winter, 2026-05-21.