apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/destiny.git lighthouse.jenkins-x.io/job: release pipeline.jenkins-x.io/traceID: e001b8f2b626e5a96c610071ce27c027 creationTimestamp: "2026-06-16T10:59:01Z" generation: 8 labels: branch: main build: "61" context: release created-by-lighthouse: "true" event-GUID: 5e1c4350-6972-11f1-96bf-0c7b248b8c98 lighthouse.jenkins-x.io/baseSHA: e8306fa7e7710db6b44a7be1d4581ff0c6eddc5b lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1781607540852" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-destiny-main-release-9crgl lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: e8306fa7e7710db6b44a7be1d4581ff0c6eddc5b lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: destiny lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: apitaltrade-destiny-main-release-rbnr4-from-build-pack-pod provider: github repository: destiny tekton.dev/pipeline: apitaltrade-destiny-main-release-rbnr4 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.18 operation: Update time: "2026-06-16T11:02:22Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:pipeline.jenkins-x.io/traceID: {} 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:buildLogsUrl: {} f:completedTimestamp: {} 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-06-16T11:06:00Z" name: greencapitaltrade-destiny-main-61 namespace: jx resourceVersion: "109577769" uid: 6f9b8dbd-f4b3-4dde-8ca9-3c5b39d4928a spec: baseSHA: e8306fa7e7710db6b44a7be1d4581ff0c6eddc5b batchPipelineActivity: {} build: "61" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/destiny/main/61.log completedTimestamp: "2026-06-16T11:05:54Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: destiny gitUrl: https://github.com/greencapitaltrade/destiny.git lastCommitMessage: | feat: harden bank statement analysis endpoint (#1171) - Move analysis logic to routes/bank_statements.js as shared analysisHandler; keep legacy /statement/:id/analysis path via re-export in routes/statements.js - Fix critical ownership bypass: compare bankStatement.application_id against ctx.applicationUser.application_id (middleware-verified), never ctx.params - Add auth guard: handler returns 404 when ctx.applicationUser absent, blocking access via the unauthenticated Saafe ingestion mount (/v1/bank_statement) - Replace workflow status with derived analysis_state: 'processing' (raw_data null), 'failed' (raw_data present, analysis null), 'analyzed' (both present) - Use exported monthKey() from bank_statement_analyzer for robust month bucketing; consume txnTimestamp ?? date; skip invalid-date transactions so they are excluded from totals, transaction_count, and monthly_breakdown - Recompute salary_detected in runAnalysis() to stay in sync on re-ingestion - Export monthKey from helpers/bank_statement_analyzer.js - Rewrite statement.test.js analysis block as real supertest HTTP tests covering all ACs: analyzed/processing/failed states, ownership bypass regression, unauthenticated mount, bad-date exclusion, no-status-field, no-PII, flow-step immutability, and legacy path parity - Add salary_detected recompute test to bank_statement_hook.test.js Co-Authored-By: Claude Sonnet 4.6 lastCommitSHA: b373428e8859013eea8adda5aa668bd4f4fd68b1 message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/destiny/main releaseNotesURL: https://github.com/greencapitaltrade/destiny/releases/tag/v1.60.2 startedTimestamp: "2026-06-16T10:59:01Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-06-16T11:05:54Z" name: from build pack startedTimestamp: "2026-06-16T10:59:05Z" status: Succeeded steps: - completedTimestamp: "2026-06-16T10:59:24Z" name: Git Clone startedTimestamp: "2026-06-16T10:59:05Z" status: Succeeded - completedTimestamp: "2026-06-16T10:59:28Z" name: Next Version startedTimestamp: "2026-06-16T10:59:24Z" status: Succeeded - completedTimestamp: "2026-06-16T10:59:31Z" name: Jx Variables startedTimestamp: "2026-06-16T10:59:28Z" status: Succeeded - completedTimestamp: "2026-06-16T11:00:32Z" name: Build Npm Install startedTimestamp: "2026-06-16T10:59:31Z" status: Succeeded - completedTimestamp: "2026-06-16T11:01:55Z" name: Build Container Build startedTimestamp: "2026-06-16T11:00:33Z" status: Succeeded - completedTimestamp: "2026-06-16T11:02:22Z" name: Promote Changelog startedTimestamp: "2026-06-16T11:01:56Z" status: Succeeded - completedTimestamp: "2026-06-16T11:02:26Z" name: Promote Helm Release startedTimestamp: "2026-06-16T11:02:22Z" status: Succeeded - completedTimestamp: "2026-06-16T11:03:38Z" name: Promote Jx Promote startedTimestamp: "2026-06-16T11:02:26Z" status: Succeeded - completedTimestamp: "2026-06-16T11:05:54Z" name: Publish Org Kb startedTimestamp: "2026-06-16T11:03:39Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/4335 startedTimestamp: "2026-06-16T11:03:07Z" status: Succeeded startedTimestamp: "2026-06-16T11:03:07Z" status: Succeeded - kind: Promote promote: environment: production pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/4336 startedTimestamp: "2026-06-16T11:03:35Z" status: Succeeded startedTimestamp: "2026-06-16T11:03:35Z" status: Succeeded version: 1.60.2 status: {}