Hermes 284313f908
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
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

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"
]
}
]