apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/fury.git lighthouse.jenkins-x.io/job: release creationTimestamp: "2026-09-14T11:42:06Z" generation: 7 labels: branch: main build: "161" context: release created-by-lighthouse: "true" event-GUID: 4c4203f8-b031-11f1-8308-edc28465a4af lighthouse.jenkins-x.io/baseSHA: 42dbe11255689c5eba33664d5bdc334611ecb921 lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1789386126457" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: encapitaltrade-fury-main-release-4jmf8 lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: 42dbe11255689c5eba33664d5bdc334611ecb921 lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: fury lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: encapitaltrade-fury-main-release-x62j9-from-build-pack-pod provider: github repository: fury tekton.dev/pipeline: encapitaltrade-fury-main-release managedFields: - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:branch: {} f:context: {} f:owner: {} f:provider: {} f:repository: {} f:spec: f:lastCommitMessage: {} f:lastCommitSHA: {} f:releaseNotesURL: {} f:version: {} manager: jx-changelog-0.10.29 operation: Update time: "2026-09-14T11:44:58Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:spec: f:completedTimestamp: {} manager: jx-promote-0.6.45 operation: Update time: "2026-09-14T11:46:05Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:labels: .: {} f:build: {} f:created-by-lighthouse: {} f:event-GUID: {} f:lighthouse.jenkins-x.io/baseSHA: {} f:lighthouse.jenkins-x.io/branch: {} f:lighthouse.jenkins-x.io/buildNum: {} f:lighthouse.jenkins-x.io/context: {} f:lighthouse.jenkins-x.io/id: {} f:lighthouse.jenkins-x.io/job: {} f:lighthouse.jenkins-x.io/lastCommitSHA: {} f:lighthouse.jenkins-x.io/refs.org: {} f:lighthouse.jenkins-x.io/refs.repo: {} f:lighthouse.jenkins-x.io/type: {} f:podName: {} f:tekton.dev/pipeline: {} f:spec: .: {} f:baseSHA: {} f:batchPipelineActivity: {} f:build: {} f:context: {} f:gitBranch: {} f:gitOwner: {} f:gitRepository: {} f:gitUrl: {} f:message: {} f:pipeline: {} f:startedTimestamp: {} f:status: {} f:steps: {} manager: jx-build-controller operation: Update time: "2026-09-14T11:48:18Z" name: greencapitaltrade-fury-main-161 namespace: jx resourceVersion: "348478880" uid: 6ba068cf-f875-4e78-81d1-2194d6cb6783 spec: baseSHA: 42dbe11255689c5eba33664d5bdc334611ecb921 batchPipelineActivity: {} build: "161" completedTimestamp: "2026-09-14T11:45:40Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: fury gitUrl: https://github.com/greencapitaltrade/fury.git lastCommitMessage: | feat: add bankStatementAnalysis GraphQL query with partner-only auth Add bankStatementAnalysis(id: ID!) query to fetch computed analysis from Destiny's bank statement analysis endpoint. Key features: - Partner-only auth: rejects when x-gct-user-id is present (borrowers have this header; partner service-to-service calls do not) - Null-safe mapping for processing/failed states (summary and monthly_breakdown may be null when analysis incomplete) - Error handling with GraphQL extensions.code for 404/403 responses - Uses current_application.id from auth context for ownership check - Maps snake_case Destiny response to camelCase GraphQL schema GraphQL schema: - BankStatementAnalysis type with uuid, analysisState, salaryDetected, summary, monthlyBreakdown - analysisState is forward-compatible string (not enum) - salaryDetected is JSON pass-through - Extends Query type Implementation: - src/schema/lending/types.ts - GraphQL type definitions - src/schema/lending/query.ts - resolver with combineResolvers, partner_only guard, null-safe field mapping - src/schema/lending/index.ts - module exports - src/schema/index.ts - registers lending schema and JSON scalar - src/__tests__/bank-statement-analysis.test.ts - comprehensive test coverage Tests cover: - Partner auth: rejects borrower-direct (with x-gct-user-id), allows partner (without x-gct-user-id), no upstream call when rejected - Null-safety: handles analyzed, processing, failed states correctly - Error channel: 404/403 map to GraphQL errors with extensions.code - Mapping: snake_case to camelCase, salaryDetected pass-through - URL construction: uses current_application.id, propagates headers Upstream endpoint: GET /v1/applications/{id}/bank_statements/{id}/analysis per Destiny API reference (services/destiny.md ยง 2.14) Co-Authored-By: Claude Sonnet 4.5 lastCommitSHA: 2c98fdfbe98aa79262013359375b362d1cf28812 message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/fury/main releaseNotesURL: https://github.com/greencapitaltrade/fury/releases/tag/v5.3.0 startedTimestamp: "2026-09-14T11:42:06Z" status: Running steps: - kind: Stage stage: completedTimestamp: "2026-09-14T11:45:40Z" name: Release startedTimestamp: "2026-09-14T11:44:40Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/5772 startedTimestamp: "2026-09-14T11:45:40Z" status: Succeeded startedTimestamp: "2026-09-14T11:45:40Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-09-14T11:48:16Z" name: from build pack startedTimestamp: "2026-09-14T11:42:10Z" status: Succeeded steps: - completedTimestamp: "2026-09-14T11:42:16Z" name: Git Clone startedTimestamp: "2026-09-14T11:42:10Z" status: Succeeded - completedTimestamp: "2026-09-14T11:42:22Z" name: Next Version startedTimestamp: "2026-09-14T11:42:17Z" status: Succeeded - completedTimestamp: "2026-09-14T11:42:28Z" name: Jx Variables startedTimestamp: "2026-09-14T11:42:23Z" status: Succeeded - completedTimestamp: "2026-09-14T11:43:32Z" name: Build Npm Install startedTimestamp: "2026-09-14T11:42:28Z" status: Succeeded - completedTimestamp: "2026-09-14T11:43:33Z" name: Build Npm Test startedTimestamp: "2026-09-14T11:43:33Z" status: Succeeded - completedTimestamp: "2026-09-14T11:43:37Z" name: Check Registry startedTimestamp: "2026-09-14T11:43:34Z" status: Succeeded - completedTimestamp: "2026-09-14T11:44:48Z" name: Build Container Build startedTimestamp: "2026-09-14T11:43:37Z" status: Succeeded - completedTimestamp: "2026-09-14T11:44:58Z" name: Promote Changelog startedTimestamp: "2026-09-14T11:44:48Z" status: Succeeded - completedTimestamp: "2026-09-14T11:45:02Z" name: Promote Helm Release startedTimestamp: "2026-09-14T11:44:58Z" status: Succeeded - completedTimestamp: "2026-09-14T11:46:08Z" name: Promote Jx Promote startedTimestamp: "2026-09-14T11:45:02Z" status: Succeeded - completedTimestamp: "2026-09-14T11:48:16Z" name: Publish Org Kb startedTimestamp: "2026-09-14T11:46:09Z" status: Succeeded - kind: Stage stage: name: from build pack startedTimestamp: "2026-09-14T11:42:10Z" status: Running steps: - completedTimestamp: "2026-09-14T11:42:16Z" name: Git Clone startedTimestamp: "2026-09-14T11:42:10Z" status: Succeeded - completedTimestamp: "2026-09-14T11:42:22Z" name: Next Version startedTimestamp: "2026-09-14T11:42:17Z" status: Succeeded - completedTimestamp: "2026-09-14T11:42:28Z" name: Jx Variables startedTimestamp: "2026-09-14T11:42:23Z" status: Succeeded - completedTimestamp: "2026-09-14T11:43:32Z" name: Build Npm Install startedTimestamp: "2026-09-14T11:42:28Z" status: Succeeded - completedTimestamp: "2026-09-14T11:43:33Z" name: Build Npm Test startedTimestamp: "2026-09-14T11:43:33Z" status: Succeeded - completedTimestamp: "2026-09-14T11:43:37Z" name: Check Registry startedTimestamp: "2026-09-14T11:43:34Z" status: Succeeded - completedTimestamp: "2026-09-14T11:44:48Z" name: Build Container Build startedTimestamp: "2026-09-14T11:43:37Z" status: Succeeded - completedTimestamp: "2026-09-14T11:44:58Z" name: Promote Changelog startedTimestamp: "2026-09-14T11:44:48Z" status: Succeeded - completedTimestamp: "2026-09-14T11:45:02Z" name: Promote Helm Release startedTimestamp: "2026-09-14T11:44:58Z" status: Succeeded - completedTimestamp: "2026-09-14T11:46:08Z" name: Promote Jx Promote startedTimestamp: "2026-09-14T11:45:02Z" status: Succeeded - name: Publish Org Kb startedTimestamp: "2026-09-14T11:42:30Z" status: Running version: 5.3.0 status: {}