You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sims-hq/apps/hq/test
Thomas Joise f1a7eac9dd feat(onboarding): composed milestone templates (shared front + per-module tail)
Supersedes the flat per-module onboarding templates: milestoneTemplate(db, code)
now returns [...front, ...tail]. front is a shared setting
(project.milestone_template.front, FRONT_FALLBACK code default: enquiry ->
visit/meeting -> quotation sent -> quotation approved) prepended to every
module's checklist. tail resolves per-module setting -> global setting ->
TAIL_FALLBACK (the old generic list), unchanged in precedence.

- STEP_STATUS gains quotation_approved -> ordered (never-downgrade guard kept).
- seed.ts seeds the front once plus SMS/RTGS/MOBILEAPP tails (advance/balance
  payment steps collapsed into a single payment_received tail step); no longer
  seeds a bare project.milestone_template default.
- migrate-onboarding-templates.ts KEY_MAP updated so advance_paid, balance_paid,
  advance_payment and balance_payment all carry forward to payment_received;
  its idempotency check holds against the longer composed list.
- Updated seed-templates, milestones-templates, milestone-status,
  migrate-onboarding-templates, milestones and milestone-payment tests to the
  composed content/mappings (TDD: reverted the implementation, confirmed the
  updated tests red, restored the implementation, confirmed green).

Backend + tests only; the live-DB migration run is a separate step.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 days ago
..
fixtures feat(hq): seed + apex csv importer with verification and series seeding (HQ-1 task 13) 2 weeks ago
amc.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
audit-viewer.test.ts feat(d27): #8 audit-log viewer (owner-only) 3 days ago
auth.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
authz-gates.test.ts fix(sec/d24): gate destructive/sensitive ops to managerial 4 days ago
aws-costs.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
aws-pull-route.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
aws-repo.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
bounces.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
bulk-sms-purchase.test.ts feat(sms): bulk SMS purchase proforma + document source tagging (renewal vs top-up) 2 days ago
client-modules.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
client-owner.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
client-support.test.ts feat(d31): store credentials in the clear (owner decision) + one-time migration 3 days ago
clients.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
concurrency.test.ts fix(sec/d24): concurrency + workflow isolation 4 days ago
convert-and-send.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
dashboard.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
db.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
documents-page.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
documents.test.ts feat(docs): require a reason when cancelling a document 2 days ago
due-dates.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
e2e.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
employees-routes.test.ts fix(sec/d24): auth hardening — login lockout, rate limits, constant-time, trust proxy 4 days ago
employees.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
functional-d26.test.ts feat(d26): functional gaps — GST summary, doc search, bulk ops (backend) 3 days ago
gmail-connect.test.ts feat(hq): one-time gmail oauth connect script (HQ-1 task 12) 2 weeks ago
gmail.test.ts feat(hq): gmail send with token-death handling and email log (HQ-1 task 11) 2 weeks ago
health.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
hq2-schema.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
hq3-schema.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
import-apex-full.test.ts feat(d21): P4 — importer seeds module field_spec + writes field_values 4 days ago
import-routes.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
import.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
interactions.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
isolation.test.ts feat(hq): HQ-1.5 — module quote content, pack pick-lists, bundle isolation check 2 weeks ago
ledger-outstanding.test.ts fix(payments): exclude draft proformas from outstanding (owner decision) 2 days ago
migrate-onboarding-templates.test.ts feat(onboarding): composed milestone templates (shared front + per-module tail) 2 days ago
migrate-plaintext.test.ts feat(d32): remove the key concept entirely + keyless legacy cleanup 3 days ago
milestone-payment.test.ts feat(onboarding): composed milestone templates (shared front + per-module tail) 2 days ago
milestone-status.test.ts feat(onboarding): composed milestone templates (shared front + per-module tail) 2 days ago
milestones-templates.test.ts feat(onboarding): composed milestone templates (shared front + per-module tail) 2 days ago
milestones.test.ts feat(onboarding): composed milestone templates (shared front + per-module tail) 2 days ago
mis.test.ts feat(d27): #5 owner MIS cockpit 3 days ago
module-access.test.ts test(d28): lock module directory + portals (fieldSpec, login-only, no secret leak) 3 days ago
module-fields.test.ts feat(d31): store credentials in the clear (owner decision) + one-time migration 3 days ago
module-roster.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
modules.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
money-guards.test.ts fix(sec/d24): money-integrity guards — CN cap, atomic doc-no, qty, TDS, markStatus 4 days ago
payments.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
pdf-download.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
pg-engine.test.ts feat(db): D19 P4 — DATABASE_URL engine selection + Postgres integration suite 4 days ago
pipeline.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
prepare-draft.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
preview-fidelity.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
preview-route.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
preview-sample.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
profile-me.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
public-share.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
quote-followup.test.ts feat(docs): require a reason when cancelling a document 2 days ago
receipt.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
recurring.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
reminder-preview.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
reminder-schedule.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
reminders-page.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
reminders.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
renewals.test.ts feat(d27): #1 renewals command center + one-click module renewal quote (backend) 3 days ago
reports.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
scheduler-recurring.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
scheduler-scan.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
seed-templates.test.ts feat(onboarding): composed milestone templates (shared front + per-module tail) 2 days ago
send-reminder.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
series.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
settings-company.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
settings-reminders.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
settings-sharing.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
settings-template.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
shares.test.ts feat(db): D19 P1-P3 — async DB interface, dual engines, Postgres adapter 4 days ago
sms-balances.test.ts feat(sms): live-only balance list, no full-row red, mandatory creds on assign 2 days ago
sms-gateway.test.ts harden(d28): SSRF guard + no credential-URL leak on SMS gateway fetch 3 days ago
sms-rate-card.test.ts feat(d23): SMS volume-band billing (dated rate card, money locked) 4 days ago
stalled-onboarding.test.ts feat(onboarding): stalled-project query for the dashboard/MIS tile 2 days ago
template-accent.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
template-render.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
templates.test.ts chore: remove all 'Tecnostac' references — everything is SiMS 2 days ago
ticket-sla.test.ts feat(d28): #3 ticket desk — SLA aging + overdue filter + bill-from-ticket 3 days ago
tickets.test.ts feat(d31): store credentials in the clear (owner decision) + one-time migration 3 days ago