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
303 lines
8.8 KiB
JSON
303 lines
8.8 KiB
JSON
[
|
|
{
|
|
"id": "F001",
|
|
"description": "Scaffold a dedicated n8n node package using valid community-node package naming and structure for npm distribution.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"Requirements",
|
|
"Rollout / Migration"
|
|
]
|
|
},
|
|
{
|
|
"id": "F002",
|
|
"description": "Configure package build metadata and scripts so compiled node + credential definitions are emitted in installable form.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
},
|
|
{
|
|
"id": "F003",
|
|
"description": "Implement `AlgaPsaApi` credential with required fields `baseUrl` and `apiKey`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F004",
|
|
"description": "Implement shared HTTP request helper that normalizes base URL and injects the `x-api-key` header for every call.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F005",
|
|
"description": "Implement single `Alga PSA` node shell with resource selector for Ticket, Client, Board, Status, and Priority.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Summary",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F006",
|
|
"description": "Implement operation routing so each resource only displays and executes its supported operations.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F007",
|
|
"description": "Implement Ticket Create operation mapped to `POST /api/v1/tickets` with required and optional payload fields.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F008",
|
|
"description": "Implement Ticket Get operation mapped to `GET /api/v1/tickets/{id}`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F009",
|
|
"description": "Implement Ticket List operation mapped to `GET /api/v1/tickets` with pagination and filter parameters.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F010",
|
|
"description": "Implement Ticket Search operation mapped to `GET /api/v1/tickets/search` with query and optional search filters.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F011",
|
|
"description": "Implement Ticket Update operation mapped to `PUT /api/v1/tickets/{id}` with partial update payload support.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F012",
|
|
"description": "Implement Ticket Update Status operation mapped to `PUT /api/v1/tickets/{id}/status`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F013",
|
|
"description": "Implement Ticket Update Assignment operation mapped to `PUT /api/v1/tickets/{id}/assignment`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F014",
|
|
"description": "Implement Ticket Delete operation mapped to `DELETE /api/v1/tickets/{id}`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F015",
|
|
"description": "Normalize delete responses into a non-empty success object for downstream n8n nodes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
},
|
|
{
|
|
"id": "F016",
|
|
"description": "Normalize successful API responses so node output consistently unwraps/returns `data` and includes pagination metadata when present.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
},
|
|
{
|
|
"id": "F017",
|
|
"description": "Map API failures (400/401/403/404/409/500) into actionable n8n errors including `error.code`, `error.message`, and `error.details`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F018",
|
|
"description": "Support n8n Continue On Fail behavior so item-level errors can be emitted without aborting whole workflow when configured.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F019",
|
|
"description": "Implement Client helper resource with List operation mapped to `GET /api/v1/clients`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Summary"
|
|
]
|
|
},
|
|
{
|
|
"id": "F020",
|
|
"description": "Implement Board helper resource with List operation mapped to `GET /api/v1/boards`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Summary"
|
|
]
|
|
},
|
|
{
|
|
"id": "F021",
|
|
"description": "Implement Status helper resource with List operation mapped to `GET /api/v1/statuses`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Summary"
|
|
]
|
|
},
|
|
{
|
|
"id": "F022",
|
|
"description": "Implement Priority helper resource with List operation mapped to `GET /api/v1/priorities`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Summary"
|
|
]
|
|
},
|
|
{
|
|
"id": "F023",
|
|
"description": "Implement dynamic load-options for `client_id`, `board_id`, `status_id`, and `priority_id` in ticket create/update.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F024",
|
|
"description": "Implement manual UUID fallback entry path for required lookup fields when load-options cannot be resolved.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F025",
|
|
"description": "Implement ticket form field organization so required fields are prominent and optional fields are grouped under additional options.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F026",
|
|
"description": "Implement explicit operation parameter validation for required IDs and query terms before outbound API calls.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F027",
|
|
"description": "Write package README with credential setup, operation list, and usage examples for ticket CRUD and helper lookups.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
},
|
|
{
|
|
"id": "F028",
|
|
"description": "Document self-hosted installation paths for npm community nodes and note unverified-node availability constraints.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Rollout / Migration",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
},
|
|
{
|
|
"id": "F029",
|
|
"description": "Provide two minimal example workflow definitions: create->update-assignment and search->update-status.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
},
|
|
{
|
|
"id": "F030",
|
|
"description": "Publish initial npm package release and create release notes describing supported resources/operations and installation steps.",
|
|
"implemented": false,
|
|
"prdRefs": [
|
|
"Goals",
|
|
"Rollout / Migration",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
},
|
|
{
|
|
"id": "F031",
|
|
"description": "Implement Ticket List Comments operation mapped to `GET /api/v1/tickets/{id}/comments` with optional `limit`, `offset`, and `order` query parameters.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F032",
|
|
"description": "Implement Ticket Add Comment operation mapped to `POST /api/v1/tickets/{id}/comments` with required `comment_text` and optional `is_internal`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F033",
|
|
"description": "Keep ticket comment operations under the existing `Ticket` resource and omit `time_spent` from the n8n node because the current Alga PSA implementation does not persist or consume it.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Functional Requirements",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F034",
|
|
"description": "Update package documentation and examples to reflect the new ticket comment operations and their supported fields.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Users and Primary Flows",
|
|
"Acceptance Criteria (Definition of Done)"
|
|
]
|
|
}
|
|
]
|