Skip to content

Vue3 migration - #3

Merged
iain0901 merged 4 commits into
mainfrom
vue3-migration
Aug 24, 2026
Merged

iain0901 merged 4 commits into
mainfrom
vue3-migration

Conversation

@iain0901

Copy link
Copy Markdown
Owner

No description provided.

…ustomer experience

- createApp/Vuex4/Router4, Element Plus with global icon registry, mitt event bus
- replace EOL vab-icon UMD with local Vue3 VabIcon component + Font Awesome
- codemod sweeps: .sync->v-model, legacy slot syntax, el-icon-* to EP icons,
  size mini->small, beforeDestroy->beforeUnmount
- new landing page at / (3DRFM branding), wizard moved to /quote
- fix anonymous access to /quote* and /customer/cases/* (guard whitelist)
- wizard: local 3D model preview, per-part color picker, auto-quote breakdown
  with specialist escalation notice
- portal dashboard: production confirmation checklist (confirm/issue with notes),
  image attachments on messages
- orders page: operator quote thread dialog (reply + images + confirmation
  presets) wired to previously-unused backend routes
…NE notifications

- pricing-engine: tiered weight price, MAX(weight/time/minimum) base, business
  tier multipliers with floors, multi-color rules (combined/separated), rush,
  risk-takes-highest, volume-vs-tier discount best-of, unit/order scope,
  specialist escalation reasons; fully configurable via costCatalog.autoQuote
- slicer-pipeline: detect prusa-family/orca CLIs on PATH (Ubuntu-first),
  pre-slice model checks vs build volume, generated config.ini with supports/
  layer/infill/walls/material temps, --auto-orient + --arrange real slicing,
  parse actual grams/minutes from G-code; injectable exec for hermetic tests
- line-notify: Messaging API push client (notify-only), zh-TW templates for
  quote-ready / operator-reply / shipped, customer target resolution chain
… to Chatwoot

- runSlicerJob: model checks gate, auto-detected CLI slicing with measured
  grams/minutes overriding estimates, indicative autoQuote attached to job
- POST /api/quotes/auto: specialist full-input server-side pricing endpoint
  with audit event
- /api/public/cases/estimate now runs the pricing engine (reference-part
  usage) returning breakdown lines + escalations
- quote message threads support image attachments (multipart, stored private,
  three-way authorized download)
- structured confirmation checklist: specialist creates items (presets in UI),
  customer confirms/issues per item with free-text notes; issue items can be
  revised and re-requested; every decision logged into thread history
- Chatwoot two-way bridge: portal messages sync to a dedicated inbox with
  attachments, CS replies mirror back into the portal thread (echo-guarded);
  CHATWOOT_PORTAL_INBOX_ID env
- LINE notify hooks on quoted/operator-reply/shipped; fix date-bomb fixtures
  in idempotency tests (dynamic futureDate)
…om instance

- ensureContact: search uses q= param (email= returns empty), with 422
  duplicate fallback re-search
- createContactConversation: try modern /contacts/:id/conversations first,
  fall back to legacy POST /conversations {inbox_id, contact_id, source_id}
  which is what the production instance supports (Rails 404 otherwise)
- source_id = CHATWOOT_API_CHANNEL_IDENTIFIER prefix + stable email hash for
  per-customer conversation continuity
- verified end-to-end: portal operator message creates contact + conversation
  in inbox 3DRFM_PORTAL on live instance
@iain0901
iain0901 merged commit efe47f0 into main Aug 24, 2026
2 checks passed
@iain0901
iain0901 deleted the vue3-migration branch August 24, 2026 09:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant