G Gaia

Switch factory

CYTO-11 — Balakong Jaya CTSB CYTO-29 CTSB CYTOWELL-54 — Taming Jaya PIC/S CTWSB CYTOCNGZ-602 — Guangzhou CTCNGZ

Only factories you are granted appear here (Filament tenant menu).

Leo Lim

leo@navi.my · Owner / Admin

Profile settings Change password

Theme

Sign out
RetailSellR&DMakeBuyStockPlanItemsGMPOpsAdminInsights

Ops — job cards

Everything that must get done that isn't a production or sales order — legalization, design, admin — tracked as a list, aging visible.

3

Open

4

In progress

2

Waiting external

1

Overdue

3

Done this month

Status:
job cards
JC # Type Title Linked to PIC Status Due Days open Last update
Showing of 12 job cards

Project Gaia — static mockup in Filament v3 idiom. No backend. Job cards are illustrative — JC-26-014 (NPRA notification — AlphaMax V+ variant) is the worked example on jobcard-detail.html; Design-type rows route to their linked R&D request.

Job cards — field manifest

job_cards

FieldFilament componentTypeSourceFK target
idpkstored
factory_idtenant scope (Filament tenancy)FKstored: board is per-factoryfactories.id
jc_noTextColumn (series JC-{yy}-{seq})stringstored: auto-generated on create
typeSelect + BadgeColumn (color per type); tab filterenum: legalization / design / admin / it / facility / financestored
titleTextInput / TextColumn::url()stringstored; row links to jobcard-detail.html (design-type rows link to the linked rnd_request instead)
statusSelectColumn badge; status-chip filterenum: open / in_progress / waiting_external / donestored; design-type rows mirror design_track's own label (Brief sent / Draft vN / Approved) mapped onto the same 4 colors
priorityToggleButtons (create form only — not a list column)enum: low / medium / high / criticalstored
due_dateTextColumn::date()->color(danger when overdue)datestored; red when due_date < today and status ≠ done
customer_id / item_id / rnd_request_idSelect (one of three, optional) → "Linked to" columnFK, all nullablestored: at most one populated per card — free-text "Linked to" in the create form resolves to whichever FK matches, else stays a plain notecustomers / items / rnd_requests
pic_user_idSelect → users (primary)FKstored; collaborators live on job_card_picsusers.id
created_at / done_atTextColumn::date() (derived: Days open)datetime, done_at nullablestored; Days open = today − created_at (or done_at − created_at once Done)

job_card_pics — pivot

FieldFilament componentTypeSourceFK target
job_card_idFKstoredjob_cards.id
user_idChips (primary + collaborators), "+ Add PIC" attachFKstoredusers.id
is_primarybool flag on the chipboolstored: exactly one primary; the list's PIC column shows the primary chip + a "+N" collaborator count

job_card_activities — append-only diary

FieldFilament componentTypeSourceFK target
job_card_idFKstoredjob_cards.id
typeSegmented pill selector on the Log activity modalenum: note / call / submission / query_received / updatestored
noteTextareatextstored
atDatePicker, defaults to todaydatestored
byreadonly current userFKstored; RelationManager is insert-only: no edit, no deleteusers.id

job_card_steps — checklist

FieldFilament componentTypeSourceFK target
job_card_idFKstoredjob_cards.id
labelChecklist row labelstringstored: freeform per job card, e.g. Legalization's "Prepare dossier → Submit → Query received → Approval"
seqorder columnintstored
done_atCheckbox/icon + date, nullabledatetime, nullablestored; first not-done step is the "current" step highlighted on the detail page

Engine notes

  • Design-type job cards are the SAME record as the R&D request's design_track — this list surfaces the designer's queue; there is no duplicate entry, editing here reflects on the R&D request and vice versa.
  • List view only, by house rule (see crm.html): no email sync, no scoring, no kanban — this is a flat, filterable, ageable list.
  • Days open = today − created_at while status ≠ done; once Done it freezes at done_at − created_at, so closed cards keep an honest cycle-time even as "today" moves on.
  • Overdue = due_date < today AND status ≠ done — drives both the red Due cell and the Overdue KPI tile; a Waiting-external card overdue past its due date is the one escalation case (see jobcard-detail.html's manifest note).

Job card

New job card

Not saved

Resolves to a customer, item, or R&D request when it matches one — otherwise stays a plain note.

Posts the first job_card_activities row (type=note) alongside the new job card.

Job card created

Static mockup — no backend.