# FieldOps Cloud QA Route and Action Inventory

Generated from actual `public/index.php` routes and template markup.

## Summary

- Routes: 98
- Links: 201
- Form/action targets: 46
- Buttons: 58
- Findings: 0

## Findings

No dead internal links, dead form actions, dead anchors, or unhooked plain buttons were found by static inventory.

## Route Map

| Method | Path |
| --- | --- |
| GET | `/` |
| GET | `/account/delete-request` |
| POST | `/account/delete-request` |
| GET | `/ai-assistant` |
| POST | `/ai-assistant/generate` |
| POST | `/api/offline-sync` |
| POST | `/api/portal/quote` |
| GET | `/auth` |
| GET | `/clients` |
| POST | `/clients` |
| GET | `/clients/create` |
| GET | `/clients/edit` |
| POST | `/clients/update` |
| GET | `/clients/view` |
| GET | `/dashboard` |
| GET | `/demo` |
| GET | `/demo/company-admin` |
| GET | `/demo/platform-admin` |
| GET | `/demo/role` |
| GET | `/dispatch` |
| POST | `/dispatch/assign` |
| POST | `/dispatch/crews` |
| GET | `/export` |
| GET | `/export-data` |
| GET | `/export-data/download` |
| GET | `/import` |
| GET | `/import-data` |
| POST | `/import-data/commit` |
| POST | `/import-data/preview` |
| GET | `/import-data/sample` |
| POST | `/import-data/undo` |
| GET | `/invoices` |
| POST | `/invoices` |
| GET | `/invoices/create` |
| GET | `/invoices/edit` |
| GET | `/invoices/new` |
| POST | `/invoices/payment` |
| POST | `/invoices/update` |
| GET | `/invoices/view` |
| GET | `/jobs` |
| POST | `/jobs` |
| GET | `/jobs/create` |
| GET | `/jobs/edit` |
| GET | `/jobs/new` |
| POST | `/jobs/update` |
| GET | `/jobs/view` |
| POST | `/login` |
| POST | `/logout` |
| GET | `/mobile/offline` |
| GET | `/platform-admin` |
| POST | `/platform-admin/accounting/connect` |
| POST | `/platform-admin/billing/override` |
| POST | `/platform-admin/demo/reset` |
| GET | `/platform-admin/health` |
| GET | `/platform-admin/mobile-offline` |
| GET | `/platform-admin/security` |
| GET | `/platform-admin/tenants` |
| POST | `/platform-admin/tenants/action` |
| POST | `/platform-admin/tenants/login` |
| GET | `/platform-admin/tenants/return` |
| POST | `/platform-admin/tenants/return` |
| GET | `/platform-admin/tenants/view` |
| GET | `/portal` |
| GET | `/pricing` |
| GET | `/privacy` |
| GET | `/quotes` |
| POST | `/quotes` |
| POST | `/quotes/convert-to-invoice` |
| GET | `/quotes/create` |
| GET | `/quotes/edit` |
| GET | `/quotes/new` |
| POST | `/quotes/update` |
| GET | `/quotes/view` |
| GET | `/recurring-jobs` |
| POST | `/recurring-jobs` |
| POST | `/recurring-jobs/generate` |
| POST | `/recurring-jobs/status` |
| GET | `/reports` |
| GET | `/schedule` |
| POST | `/schedule/appointments` |
| GET | `/settings` |
| GET | `/settings/accounting` |
| GET | `/settings/calendar` |
| GET | `/settings/llm` |
| GET | `/settings/pricing` |
| POST | `/settings/pricing` |
| POST | `/settings/pricing/reset` |
| POST | `/signup` |
| GET | `/subscription` |
| GET | `/support` |
| GET | `/team` |
| POST | `/team` |
| GET | `/team/create` |
| GET | `/team/edit` |
| POST | `/team/update` |
| GET | `/team/view` |
| GET | `/terms` |
| GET | `/workspace` |

## Button Inventory

| File | Label | Type | Hook | Disabled |
| --- | --- | --- | --- | --- |
| `templates/ai-assistant/index.php` | Quote Helper | button | data | no |
| `templates/ai-assistant/index.php` | Schedule | button | data | no |
| `templates/ai-assistant/index.php` | General | button | data | no |
| `templates/ai-assistant/index.php` | "> Generate | button | id, data | no |
| `templates/client/_filters.php` | Search | submit | form/default | no |
| `templates/client/_form.php` | (icon only) | submit | form/default | no |
| `templates/client/index.php` | Search | submit | form/default | no |
| `templates/data/import.php` | Validate CSV | submit | form/default | no |
| `templates/data/import.php` | > Commit Import | submit | form/default | yes |
| `templates/data/import.php` | Undo last import | submit | form/default | no |
| `templates/dispatch/index.php` | Go | submit | form/default | no |
| `templates/dispatch/index.php` | Save assignment | submit | form/default | no |
| `templates/dispatch/index.php` | Create crew | submit | form/default | no |
| `templates/invoice/_form.php` | Add line | button | data | no |
| `templates/invoice/_form.php` | (icon only) | submit | form/default | no |
| `templates/invoice/index.php` | Filter | submit | form/default | no |
| `templates/invoice/view.php` | Record payment | submit | form/default | no |
| `templates/job/_form.php` | (icon only) | submit | form/default | no |
| `templates/job/index.php` | Filter | submit | form/default | no |
| `templates/layouts/admin.php` | (icon only) | button | data | no |
| `templates/layouts/main.php` | Menu | button | data | no |
| `templates/llm/index.php` | Validate provider details | button | id | no |
| `templates/mobile/offline.php` | Sync now | button | data | no |
| `templates/mobile/offline.php` | Save offline | submit | form/default | no |
| `templates/portal/view.php` | Approve quote | submit | form/default | no |
| `templates/portal/view.php` | Decline quote | submit | form/default | no |
| `templates/portal/view.php` | Payment link coming soon | button | form/default | yes |
| `templates/quote/_form.php` | Add line | button | data | no |
| `templates/quote/_form.php` | (icon only) | submit | form/default | no |
| `templates/quote/index.php` | Filter | submit | form/default | no |
| `templates/quote/view.php` | Convert to invoice | submit | form/default | no |
| `templates/recurring/index.php` | > Generate next | submit | form/default | yes |
| `templates/recurring/index.php` | (icon only) | submit | form/default | no |
| `templates/recurring/index.php` | Create agreement | submit | form/default | no |
| `templates/saas/platform-admin.php` | Log in as the Tenant | submit | form/default | no |
| `templates/saas/platform-admin.php` | Save override | submit | form/default | no |
| `templates/saas/platform-admin.php` | Link accounting system | submit | form/default | no |
| `templates/saas/platform-admin.php` | Reset demo | submit | form/default | no |
| `templates/saas/pricing-admin.php` | Save global pricing | submit | form/default | no |
| `templates/saas/pricing-admin.php` | Reset pricing | submit | form/default | no |
| `templates/saas/pricing.php` | Update currency | submit | form/default | no |
| `templates/saas/subscription.php` | Apply | submit | form/default | no |
| `templates/saas/tenant-view.php` | Suspend tenant | submit | form/default | no |
| `templates/saas/tenant-view.php` | Resume tenant | submit | form/default | no |
| `templates/saas/tenant-view.php` | Add grace period | submit | form/default | no |
| `templates/saas/tenant-view.php` | Mark payment failed | submit | form/default | no |
| `templates/saas/tenant-view.php` | Mark account active | submit | form/default | no |
| `templates/saas/tenant-view.php` | Start trial | submit | form/default | no |
| `templates/saas/tenant-view.php` | End trial | submit | form/default | no |
| `templates/saas/tenant-view.php` | Extend trial | submit | form/default | no |
| `templates/saas/tenant-view.php` | Change plan | submit | form/default | no |
| `templates/saas/tenant-view.php` | Export tenant data | submit | form/default | no |
| `templates/schedule/index.php` | Book Appointment | submit | form/default | no |
| `templates/settings/index.php` | Sign Out | submit | form/default | no |
| `templates/site/auth.php` | Sign in | submit | form/default | no |
| `templates/site/auth.php` | Create workspace | submit | form/default | no |
| `templates/site/delete-request.php` | Submit request | submit | form/default | no |
| `templates/team/_form.php` | (icon only) | submit | form/default | no |
