Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
305 lines
8.9 KiB
JSON
305 lines
8.9 KiB
JSON
[
|
|
{
|
|
"id": "T001",
|
|
"description": "DB-backed integration: migrating product_code defaults existing and new tenants to psa, accepts algadesk, and rejects invalid product codes.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F004",
|
|
"F005",
|
|
"F006"
|
|
]
|
|
},
|
|
{
|
|
"id": "T002",
|
|
"description": "Unit: product resolver and assertion helpers return psa defaults, allow AlgaDesk capabilities, and throw structured ProductAccessError for denied capabilities.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F009",
|
|
"F012",
|
|
"F011"
|
|
]
|
|
},
|
|
{
|
|
"id": "T003",
|
|
"description": "Unit: product surface registry classifies representative AlgaDesk allowed, upgrade-boundary, not-found, and API-denied paths with fail-closed unknown behavior.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F019",
|
|
"F022",
|
|
"F032"
|
|
]
|
|
},
|
|
{
|
|
"id": "T004",
|
|
"description": "Static dependency guard: @alga-psa/algadesk-composition cannot depend on or import billing, projects, assets, scheduling, SLA, workflows, surveys, extensions, AI/chat, or reporting packages.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F043",
|
|
"F051",
|
|
"F056"
|
|
]
|
|
},
|
|
{
|
|
"id": "T005",
|
|
"description": "Component: AlgaDesk MSP shell renders only dashboard, tickets, clients, contacts, knowledge base, and allowed settings/profile/security navigation, while PSA shell remains unchanged.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F063",
|
|
"F068",
|
|
"F082",
|
|
"F087"
|
|
]
|
|
},
|
|
{
|
|
"id": "T006",
|
|
"description": "Component: AlgaDesk settings exposes only approved tabs and rejects direct access to excluded tabs such as billing, SLA, projects, time entry, integrations, extensions, and experimental features.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F103",
|
|
"F107",
|
|
"F108",
|
|
"F123"
|
|
]
|
|
},
|
|
{
|
|
"id": "T007",
|
|
"description": "Component: AlgaDesk dashboard shows ticket and email-channel health summaries and contains no billing, project, asset, time, workflow, or AI widgets.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F089",
|
|
"F090",
|
|
"F095",
|
|
"F097"
|
|
]
|
|
},
|
|
{
|
|
"id": "T008",
|
|
"description": "Component/integration: AlgaDesk ticket list preserves core filtering, sorting, pagination, and quick-add behavior while removing SLA status filtering.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F124",
|
|
"F126",
|
|
"F140",
|
|
"F138"
|
|
]
|
|
},
|
|
{
|
|
"id": "T009",
|
|
"description": "Component: AlgaDesk ticket detail renders core ticket metadata, conversation, assignment, tags, attachments, client/contact context, and email context, and omits SLA, project, time, asset, survey, and AI controls.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F144",
|
|
"F146",
|
|
"F156",
|
|
"F164",
|
|
"F165",
|
|
"F167",
|
|
"F171",
|
|
"F172",
|
|
"F173",
|
|
"F174"
|
|
]
|
|
},
|
|
{
|
|
"id": "T010",
|
|
"description": "DB-backed integration: AlgaDesk MSP user can create a ticket with client/contact/board/category/priority/assignment and then update status and response state with RBAC enforced.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F176",
|
|
"F177",
|
|
"F179",
|
|
"F154",
|
|
"F175"
|
|
]
|
|
},
|
|
{
|
|
"id": "T011",
|
|
"description": "DB-backed integration: ticket attachments and rich-text image uploads work for AlgaDesk tickets without exposing folder selection, broad sharing, project documents, or client document library surfaces.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F219",
|
|
"F222",
|
|
"F225"
|
|
]
|
|
},
|
|
{
|
|
"id": "T012",
|
|
"description": "Component/integration: AlgaDesk client and contact views expose CRUD/support ticket context while hiding contracts, billing config, tax, service catalog, assets, projects, documents, and surveys.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F191",
|
|
"F194",
|
|
"F199",
|
|
"F202",
|
|
"F204",
|
|
"F207"
|
|
]
|
|
},
|
|
{
|
|
"id": "T013",
|
|
"description": "Integration: AlgaDesk MSP and portal KB pages can list/view articles and MSP users can create/edit/publish according to RBAC without linking to full document management.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F212",
|
|
"F213",
|
|
"F216",
|
|
"F218"
|
|
]
|
|
},
|
|
{
|
|
"id": "T014",
|
|
"description": "Component: AlgaDesk client portal sidebar exposes only dashboard, tickets, knowledge base, profile, and client settings while hiding billing, projects, devices/assets, documents, appointments, service requests, and extensions.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F229",
|
|
"F230",
|
|
"F236",
|
|
"F241"
|
|
]
|
|
},
|
|
{
|
|
"id": "T015",
|
|
"description": "Playwright: AlgaDesk portal happy path logs in, creates a free-form ticket with attachment, views technician response, replies publicly, and validates internal comments remain hidden.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F247",
|
|
"F250",
|
|
"F254",
|
|
"F255"
|
|
]
|
|
},
|
|
{
|
|
"id": "T016",
|
|
"description": "DB-backed integration: inbound email creates a ticket using configured board/category/priority mapping and resolves sender/contact when possible.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F263",
|
|
"F265",
|
|
"F272",
|
|
"F276"
|
|
]
|
|
},
|
|
{
|
|
"id": "T017",
|
|
"description": "DB-backed integration: inbound reply adds one public ticket comment, preserves thread metadata, and dedupes repeated email events.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F278",
|
|
"F279",
|
|
"F280"
|
|
]
|
|
},
|
|
{
|
|
"id": "T018",
|
|
"description": "Route boundary smoke: AlgaDesk direct browser hits to billing, projects, assets, schedule/dispatch, time, workflows, surveys, extensions, reports, and service requests show upgrade/not-found behavior; PSA direct hits still render normally.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F292",
|
|
"F293",
|
|
"F294",
|
|
"F307"
|
|
]
|
|
},
|
|
{
|
|
"id": "T019",
|
|
"description": "API integration: AlgaDesk API key can access allowed ticket/client/contact/KB/email endpoints and receives structured product-denied responses for representative billing, projects, assets, time, workflows, extensions, AI, surveys, and full-document endpoints.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F308",
|
|
"F310",
|
|
"F318",
|
|
"F324",
|
|
"F325",
|
|
"F330"
|
|
]
|
|
},
|
|
{
|
|
"id": "T020",
|
|
"description": "API discovery integration: AlgaDesk metadata/OpenAPI/docs omit denied PSA endpoints while PSA metadata/OpenAPI/docs remain complete.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F333",
|
|
"F334",
|
|
"F335",
|
|
"F354"
|
|
]
|
|
},
|
|
{
|
|
"id": "T021",
|
|
"description": "Component contract: AlgaDesk email settings tab uses focused EmailProviderConfiguration composition instead of broad legacy EmailSettings surface.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F262"
|
|
]
|
|
},
|
|
{
|
|
"id": "T022",
|
|
"description": "Component contract: inbound email provider configuration supports mailbox/channel setup and persisted defaults mapping fields for AlgaDesk email channels.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F263"
|
|
]
|
|
},
|
|
{
|
|
"id": "T023",
|
|
"description": "Component contract: email-channel defaults support board/category/priority mapping and active state, and provider cards surface connection/webhook/sync/error health context for email-to-ticket operations.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F264",
|
|
"F265",
|
|
"F266",
|
|
"F267",
|
|
"F268",
|
|
"F269",
|
|
"F270",
|
|
"F271"
|
|
]
|
|
},
|
|
{
|
|
"id": "T024",
|
|
"description": "Component contract: AlgaDesk hides email-template automation surfaces in notifications settings compositions (including direct notifications route), preventing workflow/billing/project/survey template UI exposure.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F287",
|
|
"F288"
|
|
]
|
|
},
|
|
{
|
|
"id": "T025",
|
|
"description": "Component contract: MSP and portal layout clients apply registry-backed route behavior and render shared product route boundaries for AlgaDesk upgrade/not-found surfaces while preserving PSA pass-through behavior.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F289",
|
|
"F290",
|
|
"F291",
|
|
"F292",
|
|
"F305",
|
|
"F306",
|
|
"F307"
|
|
]
|
|
},
|
|
{
|
|
"id": "T026",
|
|
"description": "Controller contract: ApiBaseController enforces product API access post-authentication and returns structured PRODUCT_ACCESS_DENIED errors for AlgaDesk-denied API groups while allowing PSA behavior through registry rules.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F308",
|
|
"F309",
|
|
"F310",
|
|
"F324",
|
|
"F336"
|
|
]
|
|
},
|
|
{
|
|
"id": "T027",
|
|
"description": "Controller contract: metadata/OpenAPI discovery endpoints filter AlgaDesk-visible API paths and preserve PSA metadata visibility.",
|
|
"implemented": true,
|
|
"featureIds": [
|
|
"F333",
|
|
"F334",
|
|
"F335",
|
|
"F354"
|
|
]
|
|
}
|
|
]
|