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

190 lines
5.1 KiB
JSON

[
{
"id": "T001",
"description": "Unit: monthly anchor day=10 produces current period start/end with end exclusive (e.g., 2026-01-09 => 2025-12-10..2026-01-10)",
"implemented": true,
"featureIds": [
"F031",
"F001"
]
},
{
"id": "T002",
"description": "Unit: monthly anchor day=1 matches existing calendar-aligned behavior (periods start on 1st, end on 1st of next month)",
"implemented": true,
"featureIds": [
"F031",
"F014"
]
},
{
"id": "T003",
"description": "Unit: weekly anchor weekday=Mon produces correct rolling weekly boundaries with end exclusive",
"implemented": true,
"featureIds": [
"F032",
"F001"
]
},
{
"id": "T004",
"description": "Unit: bi-weekly anchor with first-start date produces stable parity across month boundaries (no drift) and end exclusive",
"implemented": true,
"featureIds": [
"F033",
"F023"
]
},
{
"id": "T005",
"description": "Unit: quarterly anchor logic produces correct quarter boundaries (with configured start month if supported)",
"implemented": true,
"featureIds": [
"F034",
"F024"
]
},
{
"id": "T006",
"description": "Unit: semi-annual anchor logic produces correct 6-month boundaries",
"implemented": true,
"featureIds": [
"F035"
]
},
{
"id": "T007",
"description": "Unit: annual anchor logic produces correct year boundaries (with configured month/day if supported)",
"implemented": true,
"featureIds": [
"F036",
"F024"
]
},
{
"id": "T010",
"description": "Unit: proration uses exclusive end dates (period days computed as end-start, not inclusive +1) and matches expected factor",
"implemented": true,
"featureIds": [
"F050",
"F001"
]
},
{
"id": "T011",
"description": "Unit: time/usage queries do not include items exactly at the period end boundary (end exclusive)",
"implemented": true,
"featureIds": [
"F052",
"F001"
]
},
{
"id": "T012",
"description": "Unit: overlap/validation logic treats [start, end) correctly (touching boundaries do not overlap)",
"implemented": true,
"featureIds": [
"F051",
"F041"
]
},
{
"id": "T020",
"description": "Integration: createClientContractLineCycles creates the initial cycle aligned to configured monthly anchor for a client with no existing cycles",
"implemented": true,
"featureIds": [
"F030",
"F031",
"F014"
]
},
{
"id": "T021",
"description": "Integration: createClientContractLineCycles backfills multiple cycles up to 'now' without overlaps under end exclusive semantics",
"implemented": true,
"featureIds": [
"F030",
"F041"
]
},
{
"id": "T022",
"description": "Integration: manual createNextBillingCycle respects effectiveDate/anchor inputs (no longer ignored) and returns duplicate/suggestedDate correctly",
"implemented": true,
"featureIds": [
"F040",
"F041"
]
},
{
"id": "T023",
"description": "Integration: changing anchor applies after the last invoiced cycle and creates a transition period to align to the next anchor boundary without gaps/overlaps",
"implemented": true,
"featureIds": [
"F042",
"F041"
]
},
{
"id": "T024",
"description": "Integration: transition period fixed charges are prorated by (actualDays / canonicalCycleDays) under end exclusive semantics",
"implemented": true,
"featureIds": [
"F043",
"F050"
]
},
{
"id": "T030",
"description": "Unit/UI: Client → Billing schedule editor renders upcoming periods preview and saving schedule calls the unified update action",
"implemented": true,
"featureIds": [
"F020",
"F060"
]
},
{
"id": "T031",
"description": "UI: Client → Billing “Create Next Cycle” triggers createNextBillingCycle for that client",
"implemented": true,
"featureIds": [
"F027"
]
},
{
"id": "T033",
"description": "UI: Billing → Billing Cycles is summary-only (no schedule editing controls) and links to Client → Billing for schedule changes",
"implemented": true,
"featureIds": [
"F026"
]
},
{
"id": "T034",
"description": "Unit: updateClientBillingSchedule applies cutover after last invoiced cycle and deactivates future non-invoiced cycles; if no invoiced cycles exist, deactivates all non-invoiced cycles",
"implemented": true,
"featureIds": [
"F044"
]
},
{
"id": "T035",
"description": "Unit: updateClientBillingSchedule atomically updates billing cycle + anchor and uses cutover semantics identical to anchor-only changes",
"implemented": true,
"featureIds": [
"F045",
"F042",
"F044"
]
},
{
"id": "T032",
"description": "Unit: anchor validation errors are clear (invalid day-of-month/day-of-week or non-UTC-midnight reference dates)",
"implemented": true,
"featureIds": [
"F013",
"F061"
]
}
]