Files
lcbp3/specs/09-history/2025-12-06_p0-build-fixes.md
admin 5c49bac772
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled
251206:1710 specs: frontend plan P1,P3 wait Verification
2025-12-06 17:10:56 +07:00

2.5 KiB

2025-12-06 P0 Build Fix Summary

Date: 2025-12-06 Status: P0 Complete Objective: Resolve Critical Build Failures

Executive Summary

This session addressed critical TypeScript build errors in the backend that were preventing successful compilation (pnpm build). These errors originated from stricter TypeScript settings interacting with legacy P0 code and recent refactors.

Result: pnpm build now passes successfully.

Fixed Issues

1. Workflow DSL Parser (parser.service.ts)

  • Issue: Property mismatches between DSL JSON and WorkflowDefinition entity (camelCase vs snake_case).
  • Fix: Mapped properties correctly:
    • dsl.name -> entity.workflow_code
    • dsl.isActive -> entity.is_active
    • dsl.dslContent -> entity.dsl (Direct JSON storage)
  • Issue: Strict strict-mode errors in catch(error) blocks (unknown type).
  • Fix: Cast error to any and added fallback logic.

2. Permissions Guard (permissions.guard.ts)

  • Issue: Strict type checking failures in Ability.can(action, subject).
  • Fix: Explicitly cast action and subject to any to satisfy the CASL Ability type signature.

3. Ability Factory (ability.factory.ts)

  • Issue: item.constructor access on potentially unknown type.
  • Fix: Explicitly typed item as any in detectSubjectType.

4. RBAC Guard (rbac.guard.ts)

  • Issue: Incorrect import (PERMISSION_KEY vs PERMISSIONS_KEY) and mismatch with updated Decorator (Array vs String).
  • Fix: Updated to use PERMISSIONS_KEY and handle array of permissions. Fixed import paths (removed .js).

5. Document Numbering Service

  • Issue: Unknown error type in catch block.
  • Fix: Cast error to any for logging.

6. P0-1: RBAC Tests (ability.factory.spec.ts)

  • Issue: Tests failed to load due to Cannot find module ... .js.
  • Fix: Removed .js extensions from imports in organization.entity.ts, project.entity.ts, contract.entity.ts, routing-template.entity.ts.
  • Issue: Global Admin test failed (can('manage', 'all') -> false).
  • Fix:
    1. Updated detectSubjectType to return string subjects directly (fixing CASL string matching).
    2. Moved system.manage_all check to top of parsePermission to prevent incorrect splitting.
  • Verification: pnpm test src/common/auth/casl/ability.factory.spec.ts -> PASS (7/7 tests).

Verification

  • Ran pnpm build.
  • Outcome: Success (Exit code 0).

Next Steps

  • Continue to P3 (Admin Panel) or P2-5 (Tests) knowing the foundation is stable.