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
266 lines
8.4 KiB
JSON
266 lines
8.4 KiB
JSON
[
|
|
{
|
|
"id": "F001",
|
|
"description": "Introduce workflow-safe time module helper boundaries that accept tenant, actor user, transaction/knex context, and validated input without relying on Next.js server-action wrappers.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Workflow-safe time domain helpers"
|
|
]
|
|
},
|
|
{
|
|
"id": "F002",
|
|
"description": "Normalize helper errors into workflow-compatible validation, action, and transient error categories with actionable messages.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Workflow-safe time domain helpers",
|
|
"Non-functional Requirements"
|
|
]
|
|
},
|
|
{
|
|
"id": "F003",
|
|
"description": "Replace or version the existing unsafe direct-write `time.create_entry` action so workflow-created entries use canonical helper behavior.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions",
|
|
"Versioning / compatibility"
|
|
]
|
|
},
|
|
{
|
|
"id": "F004",
|
|
"description": "Implement `time.create_entry` with service validation, user-timezone work-date computation, optional/default time-sheet association, and normalized output.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F005",
|
|
"description": "Ensure workflow-created time entries resolve default contract line when omitted and canonical contract-line resolution can determine one.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F006",
|
|
"description": "Ensure workflow-created and workflow-updated billable entries preserve bucket usage side effects for bucket-backed contract lines.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions",
|
|
"Data / API / Integrations"
|
|
]
|
|
},
|
|
{
|
|
"id": "F007",
|
|
"description": "Ensure workflow-created, updated, and deleted project-task time entries preserve project task actual-hours recalculation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F008",
|
|
"description": "Ensure workflow-created ticket and project-task entries preserve canonical resource-assignment side effects where existing product behavior adds the user to ticket/task resources.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F009",
|
|
"description": "Implement `time.get_entry` to load a tenant-scoped time entry by ID with normalized workflow output.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F010",
|
|
"description": "Implement `time.find_entries` with bounded filters for user, work item, client, time sheet, service, contract line, approval status, billable flag, work date/date range, start/end range, invoiced flag, and limit.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F011",
|
|
"description": "Implement `time.update_entry` for allowed non-invoiced entry updates while recomputing dependent fields and preserving canonical state guards.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F012",
|
|
"description": "Implement `time.delete_entry` for non-invoiced entries, including bucket usage decrement and project-task actual-hours recalculation.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F013",
|
|
"description": "Implement `time.set_entry_approval_status` for allowed approval state transitions, including change-request comment support.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F014",
|
|
"description": "Implement `time.request_entry_changes` as a convenience action for requesting changes on one or more submitted entries with comments.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time entry actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F015",
|
|
"description": "Implement `time.find_or_create_timesheet` by user and period or work date, returning sheet, period, status, and summary fields.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time sheet actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F016",
|
|
"description": "Implement `time.get_timesheet` with period, comments, and summary counts/minutes.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time sheet actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F017",
|
|
"description": "Implement `time.find_timesheets` with bounded filters for users, period/date range, status, and approval scope.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time sheet actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F018",
|
|
"description": "Implement `time.submit_timesheet` using canonical submit behavior and updating associated entries to `SUBMITTED`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time sheet actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F019",
|
|
"description": "Implement `time.approve_timesheet` using canonical approval behavior and updating associated entries to `APPROVED`.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time sheet actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F020",
|
|
"description": "Implement `time.request_timesheet_changes` to move a sheet to `CHANGES_REQUESTED` with approver comment/reason behavior.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time sheet actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F021",
|
|
"description": "Implement `time.reverse_timesheet_approval` with the existing invoiced-entry guard and status reset behavior.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time sheet actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F022",
|
|
"description": "Implement `time.add_timesheet_comment` with owner/approver permission semantics and normalized comment output.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Time sheet actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F023",
|
|
"description": "Implement `time.summarize_entries` to return counts and minutes grouped by common workflow dimensions.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Readiness helper actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F024",
|
|
"description": "Implement `time.find_billing_blockers` to detect unapproved, unsubmitted, change-requested, missing-service, missing-contract-line, invalid-duration, missing-work-item, and time-sheet attachment blockers over a bounded scope.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Readiness helper actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F025",
|
|
"description": "Implement `time.validate_entries` to return pass/fail readiness validation details for a bounded entry set or query.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Readiness helper actions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F026",
|
|
"description": "Add workflow action input schemas and output schemas for all new time actions with stable IDs, descriptions, and examples where useful.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Workflow registry integration",
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F027",
|
|
"description": "Add editor metadata for user, ticket, notes/comment textarea fields, and other high-value fixed/reference inputs supported by current picker infrastructure.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes"
|
|
]
|
|
},
|
|
{
|
|
"id": "F028",
|
|
"description": "Decide and implement minimal additional fixed picker support for service, contract line, time entry, time sheet, and time period fields if included in phase 1.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"UX / UI Notes",
|
|
"Open Questions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F029",
|
|
"description": "Register all time actions under `registerTimeActions()` and ensure the Workflow Designer Time catalog group lists the expanded action set.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Workflow registry integration"
|
|
]
|
|
},
|
|
{
|
|
"id": "F030",
|
|
"description": "Enforce workflow actor permissions for time entry and time sheet actions, including acting-on-behalf and approval constraints where applicable.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Security / Permissions"
|
|
]
|
|
},
|
|
{
|
|
"id": "F031",
|
|
"description": "Ensure mutating actions write workflow run audit records with action id, version, step path, key entity IDs, and changed summary data.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Observability / Auditability"
|
|
]
|
|
},
|
|
{
|
|
"id": "F032",
|
|
"description": "Document behavior changes and compatibility decisions for `time.create_entry`, especially service requirement and canonical side effects.",
|
|
"implemented": true,
|
|
"prdRefs": [
|
|
"Rollout / Migration",
|
|
"Versioning / compatibility"
|
|
]
|
|
}
|
|
]
|