Project

General

Profile

Actions

Issue #835

closed
RA

問題:ISO 連線失敗一律記為 ISSUER_TIMEOUT,無法區分斷線與逾時

Issue #835: 問題:ISO 連線失敗一律記為 ISSUER_TIMEOUT,無法區分斷線與逾時

Added by Redmine Admin 6 days ago. Updated 6 days ago.

Status:
Closed
Priority:
P2-Normal
Assignee:
-
Category:
Operations
Start date:
10/19/2026
Due date:
10/19/2026
% Done:

0%

Estimated time:
Story Points:

Description

現象

handleAuthorization 的 catch 註解寫明包含逾時、TCP 斷線與尚未連線,
但 adviceReason 一律設為 ISSUER_TIMEOUT。

影響

日誌與 Advice reason 無法區分真正的銀行逾時與連線被拒/斷線,對營運判讀
與自動化測試都不利。

建議

  • 區分 ISSUER_TIMEOUT、ISSUER_UNAVAILABLE、ISSUER_DISCONNECTED。
  • 更新 Advice reason 與 README。
  • 補對應測試。

Related issues 2 (1 open — 1 closed)

Related to CR #829: CR:新增 ISO 發卡行斷線/恢復控制與斷線測試New10/19/202610/19/2026

Actions
Related to Requirement #821: NCCC ISO8583 STIP Mock:建立可驗證的專業測試基準Closed10/19/202610/19/2026

Actions

RA Updated by Redmine Admin 6 days ago Actions #1

開工(2026-10-20,#A-365):已實作分類函式並全綠(詳結案 journal)。★ 本筆併記:Issue tracker 之工作流原漏 New → In Progress(D-023 僅補 CR/Task/Requirement)——已擴充 fix_workflow.rb 補齊。

RA Updated by Redmine Admin 6 days ago Actions #2

【完成+結案(2026-10-20,#A-365)】連線失敗已分類,不再一律記 ISSUER_TIMEOUT。

實作(nccc_gateway.js):新增 classifyIssuerConnectionFailure——

  • ISSUER_TIMEOUT:等待 0110 逾時(銀行端未及時回應);
  • ISSUER_UNAVAILABLE:ECONNREFUSED(埠無人監聽);
  • ISSUER_DISCONNECTED:TCP 斷線(ECONNRESET/SIGKILL 後 close)、尚未連線及其他連線類錯誤。
    handleAuthorization 之 catch 改用分類結果作為 adviceReason 與日誌原因。

測試:test/integration/disconnect.test.js(#837)以 SIGKILL 發卡行製造真實硬斷線——
斷線期間 0100 → 0110/00(STIP),gateway 日誌斷言 ISSUER_DISCONNECTED(與 Timeout 分離);
JSON 版之 ISSUER_UNAVAILABLE(ECONNREFUSED)亦由 disconnect.test.js 覆蓋。全量 41 測 0 失敗。README 已同步。

Actions

Also available in: PDF Atom