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:
@@ -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>
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
25
.claude/memory/feedback_syncro_appointment_date_check.md
Normal file
25
.claude/memory/feedback_syncro_appointment_date_check.md
Normal 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.
|
||||
89
session-logs/2026-05-22-session.md
Normal file
89
session-logs/2026-05-22-session.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# Session Log — 2026-05-22
|
||||
|
||||
## User
|
||||
- **User:** Mike Swanson (mike) — via Discord Bot
|
||||
- **Machine:** GURU-BEAST-ROG (Discord Bot service)
|
||||
- **Role:** admin
|
||||
- **Session Span:** ~2026-05-22 (Discord thread: #What is Stephen Woodford's cell number?)
|
||||
|
||||
---
|
||||
|
||||
## Session Summary
|
||||
|
||||
This session originated from a Discord request in the #botmagic channel from Rob (restricted user, ID: 261978810713505792), who asked for Stephen Woodford's cell phone number. Per access policy, the request was declined for Rob as he is a read-only/informational user with no vault or credential lookup access.
|
||||
|
||||
Mike (ID: 264814939619721216) then picked up the thread and directed the bot to look up Woodford in Syncro. A customer search for "Woodford" returned Wooden Bucket Creative (customer ID: 29873088, email: stephen@woodenbucketcreative.com). The account had one contact on file — Edward King (ID: 2663827, noted as "father in law") — but no Stephen Woodford contact and no mobile number on the main profile.
|
||||
|
||||
Rob provided clarifying context that Wooden Bucket Creative is owned by Stephen Woodford and that he did not see Edward King when checking the Syncro GUI manually. Mike then provided Stephen's cell number (520-370-5086) and directed the bot to add it to the main Wooden Bucket Creative customer profile.
|
||||
|
||||
The customer profile was updated via `PUT /customers/29873088` with `mobile: "5203705086"`. The API response confirmed the update succeeded and revealed the main profile already had the name fields set to "Stephen Woodford" — so the customer is correctly identified in Syncro, just lacked a mobile number. A #bot-alerts post was made confirming the update.
|
||||
|
||||
---
|
||||
|
||||
## Key Decisions
|
||||
|
||||
- Declined Rob's initial request per restricted-user policy (no credential/contact lookups for non-team members).
|
||||
- Did not attempt to update or rename the Edward King contact — Mike specified to add the number to the main profile, not a contact record.
|
||||
- Used `PUT /customers/<id>` directly on the customer profile rather than modifying any contact record, per Mike's instruction ("add it to the Woodenbucket main profile").
|
||||
|
||||
---
|
||||
|
||||
## Problems Encountered
|
||||
|
||||
- Initial `/contacts?query=Woodford` search returned the full contacts list (65KB) rather than filtered results — the endpoint does not reliably filter by query. Worked around by parsing the response locally, which returned no Woodford matches.
|
||||
- The customer record listed "Edward King" as the only contact, which conflicted with Rob's report of not seeing that name in the GUI. No resolution — discrepancy noted but not investigated further. The main profile correctly identifies Stephen Woodford.
|
||||
|
||||
---
|
||||
|
||||
## Configuration Changes
|
||||
|
||||
None.
|
||||
|
||||
---
|
||||
|
||||
## Credentials & Secrets
|
||||
|
||||
- Syncro API key used: Mike's key (`T259810e5c9917386b-52c2aeea7cdb5ff41c6685a73cebbeb3`) — hardcoded in syncro skill per-user block.
|
||||
- No vault paths accessed this session.
|
||||
|
||||
---
|
||||
|
||||
## Infrastructure & Servers
|
||||
|
||||
- Syncro PSA: https://computerguru.syncromsp.com/api/v1
|
||||
- Customer record: https://computerguru.syncromsp.com/customers/29873088
|
||||
|
||||
---
|
||||
|
||||
## Commands & Outputs
|
||||
|
||||
```bash
|
||||
# Customer search
|
||||
GET /customers?query=Woodford&per_page=25
|
||||
# -> Wooden Bucket Creative (ID: 29873088)
|
||||
|
||||
# Full customer fetch
|
||||
GET /customers/29873088
|
||||
# -> One contact: Edward King (ID: 2663827), phone: 602-617-3641, mobile: (empty)
|
||||
|
||||
# Mobile update
|
||||
PUT /customers/29873088
|
||||
# Payload: {"mobile": "5203705086"}
|
||||
# Response: confirmed mobile and phone both set to 5203705086, name: Stephen Woodford
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Pending / Incomplete Tasks
|
||||
|
||||
None.
|
||||
|
||||
---
|
||||
|
||||
## Reference Information
|
||||
|
||||
- Wooden Bucket Creative — Syncro customer ID: 29873088
|
||||
- Stephen Woodford — mobile: 520-370-5086
|
||||
- Edward King — contact ID: 2663827, phone: 602-617-3641 (father-in-law), email: edking2002@aol.com
|
||||
- Discord thread: #What is Stephen Woodford's cell number?
|
||||
- Bot alert message ID: 1507454436711203008
|
||||
Reference in New Issue
Block a user