序言
SQLVantage 報表系統使用說明(繁體中文)
適用版本:v1.0.2(2026-07-15 發佈) 本文檔是 SQLVantage 的完整使用手冊,分為「安裝部署」「設定說明」「管理員指南」「報表設計指南」「普通使用者指南」五大篇章,管理員與普通使用者可各取所需。
1. 系統概述
1.1 這是什麼
SQLVantage 是一套 Web 報表系統。系統由「管理員」維護報表定義,「普通使用者」透過網頁選擇報表、填寫查詢條件、非同步取得結果並匯出 Excel / HTML / JSON / TEXT。
1.2 技術棧
本系統為純 Web 架構:瀏覽器端無須安裝任何用戶端或外掛程式,使用現代瀏覽器即可存取;伺服器端僅需可執行程式及其配套設定目錄即可執行,部署簡單。
1.3 核心概念
| 概念 | 說明 |
|---|---|
| 報表(Report) | 一個報表 = SQL + FORM + HTML 三部分程式碼 + 三份格式 JSON(SqlFormat / FormFormat / HtmlFormat),歸屬於某個「職責」 |
| 職責(Responsibility) | 報表的分類目錄,對應 Oracle EBS 中的職責,用於把報表按模組分組展示給使用者 |
| 參數(Parameter) | FORM 中定義的查詢條件(如日期、客戶、組織等),提交後作為命名參數綁定到 SQL |
| 請求(Request) | 普通使用者一次具體的報表執行任務,系統後台非同步執行並產生結果檔案 |
| 授權(License) | 控制報表數量與使用期限的授權檔案 conf/license.dat |
1.4 使用者角色
| 角色 | 入口 | 權限 |
|---|---|---|
| 管理員(admin) | /admin/login |
使用者管理、職責管理、報表管理、授權匯入、系統設定、全部請求監控 |
| 普通使用者(normal) | /login |
選擇報表、填寫參數、提交請求、檢視自己的請求、下載結果、修改密碼 |
1.5 目錄結構
發佈包解壓後的主要檔案:
SQLVantage/
├── SQLVantage.exe / sqlvantage # 主程式(Windows / Linux)
├── conf/
│ ├── app.conf # 系統設定檔(連接埠/語言/Oracle 等)
│ ├── data.dat # 業務資料庫(使用者/職責/報表/請求)
│ ├── license.dat # 授權檔案
│ └── locale/ # 語言包
├── data/ # 執行時期產生:<請求ID>.xlsx / <請求ID>.json
├── docs/ # 使用文件(多語言,含 images/)
└── tmp/ # 暫存檔(工作階段、任務)
2. 安裝部署(Windows / Linux)
2.1 環境需求
- 作業系統:Windows 7+ / 64 位元 Linux(x86_64)
- 執行方式(建議):直接使用發佈好的可執行程式(
SQLVantage.exe或 Linux 二進位檔),無需安裝任何執行環境 - Oracle 資料庫:報表執行需要能連線 Oracle(本系統預設連線 Oracle EBS),請提前確認網路與帳號
- 磁碟/目錄權限:程式執行目錄需要可寫權限,因為執行時期會產生
data/、tmp/目錄並讀寫conf/下的檔案
2.2 Windows 平台安裝
-
解壓縮:將發佈包(zip)解壓縮到任意目錄,例如
D:\SQLVantage\。解壓縮後確認以下關鍵檔案存在:D:\SQLVantage\ ├── SQLVantage.exe # 主程式 ├── conf\app.conf # 設定檔 ├── conf\data.dat # 資料庫(隨包附帶的空庫) └── conf\locale\ # 語言包 -
(選用)修改設定:用記事本開啟
conf\app.conf,按 第 3 章 修改監聽位址、連接埠、Oracle 連線等。 -
啟動程式:雙擊
SQLVantage.exe,或在命令列中執行:cd D:\SQLVantage SQLVantage.exe啟動成功後主控台會列印版本資訊、授權狀態,並進入監聽狀態。
-
存取系統:瀏覽器開啟
http://127.0.0.1:8080(預設位址,可在app.conf中修改)。 -
防火牆設定:若需區域網路/遠端存取,請在 Windows 防火牆中放行對應連接埠(如 8080):
netsh advfirewall firewall add rule name="SQLVantage" dir=in action=allow protocol=TCP localport=8080
2.3 Linux 平台安裝
-
解壓縮:將發佈包(tar.gz 或 zip)解壓縮到目標目錄,例如
/opt/sqlvantage:mkdir -p /opt/sqlvantage tar -xzf sqlvantage-linux-amd64.tar.gz -C /opt/sqlvantage cd /opt/sqlvantage -
賦予執行權限:
chmod +x sqlvantage -
(選用)修改設定:編輯
conf/app.conf(同 Windows)。 -
前景啟動測試:
./sqlvantage看到版本資訊和監聽日誌即啟動成功,按
Ctrl+C停止。 -
背景執行(建議用 systemd 或 nohup):
方式 A:nohup
cd /opt/sqlvantage nohup ./sqlvantage > sqlvantage.log 2>&1 &方式 B:systemd(建立
/etc/systemd/system/sqlvantage.service):[Unit] Description=SQLVantage Report System After=network.target [Service] WorkingDirectory=/opt/sqlvantage ExecStart=/opt/sqlvantage/sqlvantage Restart=always RestartSec=5 User=sqlvantage [Install] WantedBy=multi-user.target然後執行:
systemctl daemon-reload systemctl enable sqlvantage systemctl start sqlvantage systemctl status sqlvantage -
防火牆 / 安全群組:放行連接埠(如 8080):
firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload
2.4 從原始碼編譯(選用)
僅對獲得原始碼的使用者開放:在原始碼目錄執行 go build 即可編譯產出目前平台的可執行檔。正式部署環境建議直接使用官方發佈的可執行程式。
2.5 首次啟動
首次啟動時系統會自動完成以下初始化:
- 檢查資料檔案:讀取
conf/data.dat(隨包附帶;若遺失會提示 "conf/data.dat is not found" 並退出,請勿刪除該檔案)。 - 自動建表:
user、responsibility、report、request四張表自動建立。 - 自動建立管理員帳號:首次存取
/admin/login時,若不存在使用者root,系統自動建立:- 使用者名稱:
root - 初始密碼:
SQLVantage - 角色:admin(管理員)
- 安全提醒:首次登入後請立即修改該密碼(管理員可在「使用者管理」中修改)。
- 使用者名稱:
- 檢查授權檔案:若
conf/license.dat遺失或無效,主控台列印警告,系統仍可執行,但受 4.7 節授權限制 約束。
3. 設定說明
3.1 設定檔位置
設定檔為 conf/app.conf(INI 格式)。有兩種修改方式:
- 方式一(建議,介面操作):管理員登入後前往「系統設定」(
/admin/setting),填寫後儲存,系統自動寫回app.conf。 - 方式二(直接編輯檔案):用文字編輯器修改
conf/app.conf後重新啟動程式。
3.2 參數說明表
| 參數 | 預設值 | 說明 |
|---|---|---|
appname |
SQLVantage |
應用程式名稱 |
httpaddr |
127.0.0.1 |
監聽 IP 位址;0.0.0.0 表示監聽所有網卡(區域網路可存取) |
httpport |
8080 |
監聽連接埠,建議 8080~8099 |
runmode |
dev |
執行模式:dev(開發,顯示詳細錯誤)/ prod(生產,隱藏錯誤細節) |
language |
en-US |
預設介面語言(優先順序低於 URL 參數 / Cookie / 瀏覽器語言) |
sessiongcmaxlifetime |
3600 |
Session 過期時間(秒),預設 1 小時 |
max_execution_time |
30 |
報表任務最大執行時間(分鐘),逾時任務自動標記為 Terminated |
oracle_server |
例 192.168.10.13 |
Oracle 資料庫伺服器 IP/主機名稱 |
oracle_port |
1521 |
Oracle 監聽連接埠 |
oracle_database |
test |
Oracle 服務名稱(SERVICE_NAME) |
oracle_username |
apps |
Oracle 連線使用者名稱 |
oracle_password |
例 oracle123 |
Oracle 連線密碼 |
3.3 修改後生效
sessiongcmaxlifetime:儲存後立即生效。- 其餘參數(連接埠、Oracle 等):修改後需重新啟動程式才生效。
3.4 語言切換
- 系統內建 12 種語言:zh-CN、zh-TW、en-US、ja-JP、ko-KR、fr-FR、de-DE、es-ES、th-TH、vi-VN、ru-RU、pt-PT。
- 切換方式:URL 加
?lang=zh-CN(如/?lang=zh-CN),或透過管理後台右上角語言選單切換;選擇後寫入 Cookie,有效期 1 年。
4. 管理員指南
4.1 管理員登入
- 瀏覽器前往
http://<伺服器位址>:<連接埠>/admin/login。 - 使用管理員帳號登入(首次為
root / SQLVantage)。 - 登入成功進入管理後台(
/admin),左側選單包含:報表管理、職責管理、使用者管理、請求管理、授權管理、系統設定、儀表板、關於。
說明:管理員帳號必須滿足
角色 = admin且狀態 = active,否則無法登入後台。
4.2 儀表板與頂部導覽
- 頂部導覽可快速跳轉:儀表板(
/admin)、報表執行(/request,新視窗)、入口首頁(/)。 - 右上角可切換語言、登出(
/admin/logout)。
4.3 使用者管理
入口:/admin/user(左側選單「使用者管理」)。
使用者欄位說明:
| 欄位 | 說明 |
|---|---|
| 使用者名稱 UserName | 登入帳號,建立後不可修改(唯讀) |
| 信箱 Email | 選填 |
| 角色 Role | normal(普通使用者)/ admin(管理員) |
| 狀態 Status | active(在職,可登入)/ inactive(離職,禁止登入) |
| 密碼 | 建立時必須填寫;加密儲存,介面不回顯 |
操作:
- 新增:點「新增」按鈕 → 填寫使用者名稱/信箱/角色/狀態/密碼/確認密碼 → 提交。
- 編輯:點列內「編輯」→ 可改信箱、角色、狀態;密碼留空表示不修改。
- 刪除:點列內「刪除」。注意:
root帳號禁止刪除;- 名下掛有報表的使用者禁止刪除(需先刪除/轉移其報表)。
管理重點:
- 普通使用者登入入口為
/login(首頁),管理員登入入口為/admin/login,兩者互不相同。 - 給普通使用者設
inactive狀態即可禁止其登入,無需刪除帳號。 - 使用者清單自動隱藏
root。
4.4 職責管理
入口:/admin/responsibility(左側選單「職責管理」)。
職責欄位說明:
| 欄位 | 說明 |
|---|---|
| 職責 ID(RespId) | Oracle EBS 中的職責 ID |
| 職責 Key(RespKey) | Oracle EBS 中的職責鍵 |
| 職責名稱(Name) | 顯示名稱,也是普通使用者端報表選單的分組名稱 |
| 簡稱(ShortName) | 選填 |
操作:
- 新增:點「新增」→ 從下拉選擇某使用者的職責(資料來自 Oracle EBS 查詢介面
/api/user/responsibilities/),選中後自動填入 RespId / RespKey / Name;也可手動填寫 → 提交。 - 編輯 / 刪除:列內按鈕操作。注意:已被報表引用的職責不能刪除。
用途:報表必須歸屬於某個職責;普通使用者端「報表選單」按職責分組展示(未歸屬職責的報表歸入「未分類」組)。
4.5 報表管理
入口:/admin/report(左側選單「報表管理」)。
報表欄位:
| 欄位 | 說明 |
|---|---|
| ID | 系統自動編號 |
| 職責(Responsibility) | 報表歸屬的分類 |
| 名稱(Name) | 報表名稱,普通使用者可見 |
| 描述(Description) | 選填 |
| 狀態(Status) | Draft(草稿)/ Release(已發佈)/ Discard(廢棄) |
| 建立/更新時間 | 系統自動記錄 |
報表生命週期(重要):
Draft(草稿,設計階段)──▶ Release(已發佈,使用者可見)
│ │
│ └──▶ 不可直接刪除,需先改為 Draft/Discard
└──▶ Discard(廢棄,使用者不可見)
- 只有狀態為 Release 的報表才會出現在普通使用者端的報表選單中。
- 已發佈(Release)的報表禁止刪除,需先在清單中把狀態改為 Draft 或 Discard 再刪除。
- 清單中的「名稱」「描述」「狀態」欄支援雙擊儲存格直接編輯(自動儲存)。
操作:
| 按鈕 | 說明 |
|---|---|
| 新增 | 彈出表單:選擇職責、填名稱/描述/狀態 → 提交 |
| 程式碼(紫色) | 開啟報表設計器(詳見第 5 章,本系統最核心功能) |
| 編輯(藍色) | 開啟基本資訊表單修改 |
| 刪除(紅色) | 刪除報表(Release 狀態禁止刪除) |
4.6 請求管理(管理員視角)
入口:/admin/request(左側選單「請求管理」)。
管理員可查看所有使用者的報表請求(普通使用者只能看自己的),支援:
- 依報表名/狀態/階段檢視;
- 檢視參數、提交人、IP 位址、建立/完成時間;
- 「輸出」下拉可直接下載該請求的 Excel / HTML / JSON / TEXT 結果;
- 單選刪除或勾選後「批次刪除」。
請求狀態含義見 第 7 章。
4.7 授權管理(License)
入口:/admin/license(左側選單「授權管理」)。
4.7.1 授權檔案是什麼
授權檔案為 conf/license.dat,由供應商簽發的一小段文字,包含以下授權資訊:
| 欄位 | 說明 |
|---|---|
reg_id |
註冊 ID(客戶唯一識別) |
company |
註冊公司名稱 |
expire |
有效期限截止日期(格式 YYYY-MM-DD,如 2026-12-31) |
系統在啟動與匯入時會自動校驗授權檔案的合法性,任何竄改(修改註冊資訊或到期日)都會導致授權無效。
4.7.2 購買流程
- 聯絡 SQLVantage 供應商/開發商,提供以下資訊:
- 單位/公司名稱(company);
- 需要授權的伺服器註冊 ID(reg_id,由供應商分配);
- 期望的授權期限。
- 供應商使用授權產生工具產生授權檔案(一段文字),交付給客戶。
- 客戶拿到檔案後按 4.7.3 匯入即可。
4.7.3 匯入授權
- 管理員登入 → 授權管理(
/admin/license)。 - 頁面顯示目前授權狀態(註冊 ID / 公司 / 到期日;無效或缺失時顯示紅色提示)。
- 點「選擇檔案」選中收到的授權檔案(可任意命名,如
license.dat)→ 點「匯入」。 - 匯入成功後系統自動校驗並重新整理頁面,顯示有效授權資訊。
也可以手動放置:將授權檔案內容儲存為
conf/license.dat後重新啟動程式。
4.7.4 無授權 / 授權過期的限制
| 限制項 | 說明 |
|---|---|
| 報表數量 | 未授權(或已過期)時,最多只能存在 3 個報表;超過後建立報表會被拒絕(提示「授權已達上限」) |
| 請求提交 | 未授權且報表數 ≥ 3 時,普通使用者提交請求會被拒絕 |
| 授權到期 | 到期後不影響已登入操作,但新增報表/提交請求會受限 |
4.8 系統設定
入口:/admin/setting(左側選單「系統設定」),視覺化編輯 conf/app.conf:
- 應用程式設定:監聽位址、連接埠、執行模式、預設語言、最大執行時間;
- 工作階段設定:Session 過期時間(秒);
- Oracle 資料庫設定:伺服器、連接埠、服務名稱、使用者名稱、密碼(帶明文/密文切換按鈕)。
儲存後部分參數立即生效,連接埠等參數需重新啟動程式。
4.9 關於
入口:/admin/aboutus,檢視系統版本、發佈資訊等。
5. 報表設計指南(核心章節)
這是 SQLVantage 最重要的功能。一個報表由三部分組成:
- SQL:定義查詢哪些資料(資料來源 SQL + 欄元資料設定)
- FORM:定義使用者填寫哪些查詢條件(參數表單)
- HTML:定義結果如何展示(表格 / 圖表 / 指標卡佈局)
三者各自有「程式碼」與「格式 JSON」兩份資料,最終儲存到報表記錄中。
5.1 設計器工作台
5.1.1 進入設計器
- 管理員登入 → 報表管理(
/admin/report)。 - 找到目標報表,點「程式碼」按鈕(紫色)。
- 彈出大尺寸設計器視窗(佔螢幕約 98%),介面分左右兩欄:
┌────────────────────────────────────────────────────────┐
│ [下拉:SQL設計 | FORM設計 | HTML設計] [儲存全部] │
├───────────────────────────────┬────────────────────────┤
│ 左側:程式碼編輯器 │ 右側:動態設計面板 │
│ (SQL 程式碼 / FORM 程式碼 / │ (隨左側模式切換) │
│ HTML 程式碼共用一個編輯器) │ · SQL: 欄元資料設定表 │
│ │ · FORM: 參數設定表 │
│ │ · HTML: 佈局塊設定表 │
└───────────────────────────────┴────────────────────────┘
5.1.2 三個模式
頂部下拉框切換設計模式,切換時左側編輯器與右側面板同步切換:
| 模式 | 編輯器內容 | 右側面板 |
|---|---|---|
| SQL 設計 | 報表查詢 SQL(Oracle 語法) | 欄元資料設定表(影響 Excel 匯出/頁面欄頭) |
| FORM 設計 | 參數表單 HTML 程式碼(表單) | 參數設定表 + 即時預覽 + 表單程式碼草稿 |
| HTML 設計 | 結果展示 HTML 程式碼(範本片段) | 佈局塊設定表 + 佈局預覽 + HTML 程式碼草稿 |
5.1.3 儲存
- 設計過程中:右側面板的變更會自動寫回隱藏欄位(
sql_code/sql_format/form_code/form_format/html_code/html_format)。 - 正式儲存:點左上角「儲存全部」按鈕,一次性把六份資料提交到
/admin/report/code/儲存到資料庫。
記住:編輯完 SQL / FORM / HTML 後務必點「儲存全部」,否則關閉視窗會遺失。
5.2 SQL 模組(設計報表資料來源)
5.2.1 編寫查詢 SQL
-
SQL 為 Oracle 語法,直接寫 SELECT 語句(可包含 FROM/JOIN/WHERE/GROUP BY 等)。
-
查詢條件使用 命名參數佔位符
:參數名,參數名需與 FORM 模組中定義的field一致。例如 FORM 中定義參數P_OU_ID,SQL 中寫:SELECT company_name, ou_id, amount FROM fnd_ou_tl WHERE ou_id = :P_OU_ID -
SQL 中所有 SELECT 出來的欄名,就是 Excel 匯出和 HTML 頁面表格的欄位識別(建議統一用大寫,如
COMPANY_NAME)。
5.2.2 欄元資料設定表(重點:Excel 匯出)
右側「SQL 欄元資料設定」表格,每一行對應 SQL 輸出的一欄:
| 欄 | 說明 | 範例 |
|---|---|---|
| 欄位名 field | SQL 輸出的欄名(輸入時自動轉大寫) | AMOUNT |
| 表頭標題 title | 顯示標題,Excel 匯出的表頭、頁面表格的欄頭 | 金額 |
| 資料型別 type | text / number / percent / date / month / time / datetime |
number |
| 精度 precision | 數值保留小數位數(預設 2) | 2 |
| 格式 format | Excel 自訂數字/日期格式 | #,##0.00 |
| 對齊 align | left / center / right |
right |
操作:點「新增行」新增欄 → 雙擊儲存格填寫 → 自動產生 JSON 快照(右側黑色程式碼預覽區),並即時寫回 sql_format。
5.2.3 SQL 欄設定與 Excel 匯出的對應關係
系統後台按以下對應規則產生 Excel(xlsx)檔案:
| 欄設定 | Excel 輸出行為 |
|---|---|
field |
與查詢結果的欄名比對,決定該欄設定作用到哪一欄 |
title |
寫入第 1 列表頭儲存格,即 Excel 表頭標題 |
type = text |
值作為文字寫入儲存格 |
type = number |
值按數字寫入,小數位數 = precision;若設定了 format 則按自訂數字格式輸出,如 #,##0.00 |
type = percent |
值按百分比格式輸出,format 可覆蓋,如 0.00% |
type = date |
值按日期輸出,format 可作為日期格式,如 yyyy-mm-dd |
align |
儲存格水平對齊:left / center / right |
precision |
數值精度(預設 2) |
也就是說:SQL 欄設定表 = Excel 匯出的「表頭 + 欄型別 + 數字格式 + 對齊」的完整定義。即使不做任何設定,Excel 也能匯出(預設文字型別、左對齊、表頭用原始欄名),但設定後匯出的 Excel 更專業。
5.2.4 一個完整的 SQL 設計範例
假設要做一個「部門費用報表」:
-
SQL 程式碼(編輯器):
SELECT DEPT_NAME, MONTH, TOTAL_AMOUNT, RATE FROM DEPT_COST_V WHERE MONTH = :P_MONTH ORDER BY DEPT_NAME -
欄元資料設定:
field title type precision format align DEPT_NAME 部門名稱 text left MONTH 月份 date yyyy-mmcenter TOTAL_AMOUNT 費用總額 number 2 #,##0.00right RATE 費用佔比 percent 2 0.00%right -
匯出的 Excel 效果:表頭為「部門名稱 / 月份 / 費用總額 / 費用佔比」,金額右對齊、千分位、2 位小數,佔比顯示為百分比。
5.3 FORM 模組(設計查詢參數表單)
5.3.1 參數設定表
右側「參數設定表」每一行定義一個查詢參數:
| 欄 | 說明 | 範例 |
|---|---|---|
| 參數名 field | 參數識別,需與 SQL 中的 :參數名 一致 |
P_OU_ID |
| 顯示標籤 label | 表單中顯示的標籤文字 | 業務實體 |
| 元件型別 type | 見下方元件型別表 | select |
| 預設值 value | 選填,初始值 | 101 |
| 校驗 verify | 校驗規則(如 required) |
required |
| 靜態選項 static_options | 下拉/單選靜態選項,格式 鍵:值,鍵:值 |
101:上海,102:北京 |
| API URL api_url | 動態選項介面位址,可帶 {變數名} 佔位符 |
/api/query?ou={P_OU_ID} |
| 查詢 SQL query_sql | 動態選項查詢 SQL,可帶 {變數名} 佔位符,回傳兩欄(值/文字) |
SELECT id, name FROM tab WHERE ou = {P_OU_ID} |
元件型別表:
| 型別 | 說明 |
|---|---|
text |
單行文字方塊 |
number |
數字輸入框 |
select |
下拉框(選項來自靜態選項 或 動態 API/SQL) |
radio |
單選組(選項來自靜態選項) |
date |
日期選擇器(YYYY-MM-DD) |
year |
年份選擇器 |
month |
月份選擇器 |
time |
時間選擇器 |
datetime |
日期時間選擇器 |
hidden |
隱藏欄位(不顯示,仍隨表單提交) |
temp |
暫時隱藏值(不提交) |
5.3.2 參數聯動(依賴篩選)
api_url/query_sql支援{變數名}佔位符:使用者改變上游參數(如選擇組織)時,系統自動把佔位符替換為目前表單的實際值,動態請求下游下拉選項。- 若上游參數未填寫,下游下拉框顯示「請先完善上方篩選條件」並清空選項,避免髒資料。
- 靜態下拉(
static_options)與動態下拉(api_url / query_sql)二選一即可。
下拉動態選項的資料格式要求:介面/SQL 回傳的每一筆記錄包含
val(值)與txt(顯示文字)兩個欄位。
5.3.3 即時預覽與程式碼產生
- 表格下方是「即時預覽區」:隨著參數設定即時渲染出表單(含日期控制項、聯動下拉等)。
- 底部「表單程式碼草稿」文字方塊即時產生完整的 FORM HTML 程式碼。
- 點「複製並套用」按鈕:將草稿程式碼寫入編輯器(FORM 模式),並同步到
form_code/form_format。
也可以不透過右側面板,直接在左側編輯器手寫 FORM HTML(表單語法),儲存時同樣生效。
5.3.4 執行時期行為
普通使用者提交表單後,系統將表單資料作為命名參數與 SQL 綁定執行;同時把參數記錄到請求中,供結果頁/匯出檔案回顯查詢條件。
5.4 HTML 模組(設計結果展示)
5.4.1 佈局塊設定表
右側「HTML 視圖元件設定」每一行定義一個展示塊:
| 欄 | 說明 | 範例 |
|---|---|---|
| 容器 ID block_id | 塊的唯一 ID(產生 DOM id 前置) | chart_zone |
| 標題 title | 塊標題 | 費用趨勢 |
| 柵格寬度 grid_md | 柵格寬度 1~12(12 佔整行) | 8 |
| 元件型別 component | table(表格)/ chart(圖表)/ card(指標卡)/ custom(自訂容器) |
chart |
| 小計 subtotal | Y(表格啟用合計列)/ N |
N |
| 圖表型別 chart_type | line(折線)/ bar(柱狀) |
line |
| X 軸欄位 x_field | 圖表橫軸欄位(來自 SQL 輸出欄) | MONTH |
| Y 軸欄位 y_fields | 圖表縱軸欄位,多個用英文逗號分隔 | TOTAL_AMOUNT |
元件說明:
| 元件 | 展示效果 | 執行時期技術 |
|---|---|---|
table |
資料表格,分頁、排序、欄頭取欄元資料 title;subtotal=Y 時數值欄顯示合計列 |
table |
chart |
圖表(line/bar),X/Y 軸欄位來自設定 | chart |
card |
指標卡(KPI 卡),顯示關鍵數值 | 自訂渲染 |
custom |
自訂內容容器 | HTML |
5.4.2 佈局預覽與程式碼產生
- 「即時佈局預覽」區即時展示各塊的高仿真骨架(標題 + 塊型別 + 寬度)。
- 「Html Code 草稿」即時產生完整 HTML 程式碼(含
data-component、data-subtotal、data-charttype、data-xfield、data-yfields等執行時期屬性)。 - 點「複製並套用」寫入編輯器並同步
html_code/html_format。
也可以在左側編輯器直接手寫 HTML 範本片段(支援常用範本語法)。執行時期渲染時範本可用的資料物件見 5.4.3。
5.4.3 結果頁渲染機制
普通使用者下載/檢視 HTML 結果時(/request/output?ext=html),系統把報表 HTML 程式碼與查詢結果 JSON、欄設定等一起渲染:
| 範本變數 | 說明 |
|---|---|
data |
查詢結果 JSON 陣列(執行時期注入,配合 {{.data}} 輸出為 JS 資料) |
params |
本次請求的查詢參數(鍵值對) |
colsConfig |
SQL 欄元資料(供表格欄頭/圖表系列名稱使用) |
reportName / reportDate / status |
報表名稱、產生時間、狀態 |
頁面自動把 data-component="table" 的容器渲染為表格、chart 渲染為圖表、card 渲染為指標卡。
5.5 報表發佈流程(管理員操作建議)
1. 報表管理 → 新增報表(選擇職責、填名稱、狀態選 Draft)
2. 點「程式碼」進入設計器
3. SQL 設計:寫查詢 SQL + 設定欄元資料(Excel 匯出依據)
4. FORM 設計:設定查詢參數(與 SQL 參數一一對應)
5. HTML 設計:設定展示佈局(表格/圖表/指標卡)
6. 點「儲存全部」→ 關閉設計器
7. 回到報表清單,把狀態改為 Release(發佈)
8. 普通使用者登入即可在報表選單中看到該報表並執行
5.6 設計注意事項
- SQL 與 FORM 參數名必須完全一致(SQL 用
:參數名,FORM 用field)。 - SQL 欄名建議用大寫;欄元資料設定表會自動把 field 轉大寫。
- 報表 SQL 必須能被 Oracle 預編譯(
db.Prepare),語法錯誤會導致請求執行失敗(狀態 Error)。 - 無授權時報表數量上限 3 個,設計前請確認授權狀態。
- 儲存後可在「請求管理」或普通使用者端執行一次請求,驗證 SQL 與展示是否正確。
6. 普通使用者指南
6.1 登入
瀏覽器存取系統首頁(預設 http://<伺服器位址>:<連接埠>/),點「使用者登入」卡片進入登入頁 /login。登入頁提供兩種登入方式(標籤切換):
方式一:ERP 驗證(Oracle EBS 單點)
- 切到「ERP 驗證」標籤。
- 輸入 EBS 使用者名稱(如
APPS),點「驗證登入」。 - 系統透過 Oracle 檢查該使用者在 EBS 的
icx_sessions工作階段是否有效(30 分鐘有效視窗),有效則直接進入系統。 - 特點:無需本機密碼;登入身分為使用者在 EBS 中的身分。
方式二:本機帳號
- 切到「本機帳號」標籤。
- 輸入管理員分配的使用者名稱和密碼,點「登入」。
- 特點:帳號由管理員在「使用者管理」中建立。
注意:帳號被管理員設為
inactive(離職)後無法登入。
6.2 入口首頁
登入成功後進入入口首頁(/),包含:
- 頂部:歡迎語(使用者名稱)、修改密碼入口。
- 導覽卡片:
- 新增報表請求(進入報表執行頁面
/request); - 我的請求(檢視歷史請求與結果);
- 管理員登入、系統設定、授權管理、關於等卡片(普通使用者無需使用,點入會跳轉管理員登入頁)。
- 新增報表請求(進入報表執行頁面
- 右上角可切換介面語言。
6.3 新增報表請求
- 入口首頁點「新增報表請求」卡片,或直接存取
/request。 - 在請求清單頁點「新增」按鈕。
- 彈出「報表選單」視窗:報表依職責(模組)分組展示,只顯示已發佈(Release)的報表;也可在頂部下拉框依名稱搜尋。
- 點擊某個報表,右側載入該報表的參數表單。
- 填寫查詢條件(日期/下拉/文字等),點「提交」。
- 提交成功後在請求清單中看到新記錄,狀態為 Queued(排隊中)。
6.4 我的請求清單
入口:/request(頂部也可從入口卡片進入)。
| 欄 | 說明 |
|---|---|
| ID | 請求編號 |
| 報表名稱 | 執行的報表 |
| 階段 Phase | Pending(排隊)/ Running(執行中)/ Completed(完成) |
| 狀態 Status | Queued(排隊)/ Processing(處理中)/ Success(成功)/ Error(失敗)/ Terminated(逾時終止) |
| 輸出 Output | 下載結果的下拉選單 |
| 訊息 Message | 執行資訊(如 SQL 錯誤) |
| 參數 Parameters | 本次提交的查詢條件 |
| 建立/完成時間 | 記錄時間 |
操作:點某行「輸出」下拉,選擇 Excel / HTML / JSON / TEXT,在新視窗開啟或下載對應格式的結果檔案。
6.5 修改密碼
- 入口首頁頂部點「修改密碼」。
- 填寫目前密碼、新密碼、確認新密碼(新密碼至少 6 位)。
- 提交成功即可用新密碼登入(僅本機帳號登入有效;ERP 驗證方式與 EBS 密碼無關)。
7. 請求執行與輸出結果
7.1 執行流程(非同步)
使用者提交請求
│
▼
寫入 request 表(Phase=Pending, Status=Queued)
│
▼
背景輪詢協程(每 3 秒)拉取排隊任務(每批最多 5 個,並發最多 3 個)
│
▼
樂觀鎖搶佔任務 → Phase=Running, Status=Processing
│
▼
解析參數 → 讀取報表 SQL → Oracle 預編譯執行
│
├── 失敗 → Status=Error(記錄錯誤訊息)
│
▼
產生結果檔案:data/<請求ID>.xlsx 與 data/<請求ID>.json
│
▼
Phase=Completed, Status=Success
- 逾時保護:執行超過
max_execution_time(預設 30 分鐘)的任務自動標記為 Terminated。 - 結果檔案依請求 ID 儲存在
data/目錄,不會互相覆蓋。
7.2 輸出格式
| 格式 | 說明 |
|---|---|
| Excel | xlsx 檔案,表頭/欄型別/格式/對齊由 SQL 欄元資料決定(見 5.2.3),檔名格式:<報表名>_<時間戳>.xlsx |
| HTML | 在瀏覽器中渲染報表 HTML 佈局(表格/圖表/指標卡)+ 查詢條件回顯 |
| JSON | 原始查詢結果 JSON(便於二次開發/介面對接) |
| TEXT | 純文字頁面展示資料 |
7.3 權限控制
- 普通使用者只能看到自己提交的請求(依建立人過濾)。
- 管理員在「請求管理」可檢視所有使用者的請求。
- ERP 登入使用者提交時,若表單包含
P_OU_ID/P_ORG_ID等組織權限參數,系統會校驗該值是否在使用者 EBS 擁有的 OU/ORG 範圍內,越權會被拒絕。
8. 常見問題 FAQ
Q1:啟動時提示 "conf/data.dat is not found"?
資料庫檔案缺失。請確認解壓完整,conf/data.dat 存在;不要用空檔案取代,需使用隨發佈包提供的資料庫檔案。
Q2:瀏覽器打不開頁面?
確認程式已啟動;確認 httpaddr/httpport 設定正確(預設 127.0.0.1:8080,本機存取 OK、其他機器存取需改為 0.0.0.0 並放行防火牆連接埠)。
Q3:登入提示帳號或密碼錯誤?
- 本機帳號:確認使用者名稱/密碼正確、狀態為 active。
- 管理員:確認角色為 admin。
- 忘記密碼:聯絡管理員在「使用者管理」中重設。
Q4:提交報表請求後狀態一直 Error?
多為 SQL 語法錯誤或 Oracle 連線問題。檢視請求「訊息」欄的報錯資訊:Prepare statement failed 表示 SQL 預編譯失敗;Oracle connection failed 表示資料庫連線設定錯誤(檢查 app.conf 的 oracle_* 參數)。
Q5:報表在普通使用者選單中看不到? 確認報表狀態為 Release(只有已發佈報表可見)。
Q6:請求長時間 Running?
執行時間超過 max_execution_time 分鐘會被自動終止。可適當調大該參數後重新啟動。
Q7:建立報表提示授權已達上限? 未匯入有效授權檔案(或已過期),未授權時最多 3 個報表。請依 4.7 節 匯入授權。
Q8:Excel 匯出表頭是英文欄名?
SQL 欄元資料設定中未填 title,或未對應到 SQL 輸出欄名。請在「SQL 設計」的欄設定表中把 field 填成與 SQL 輸出欄一致、並填寫 title。
Q9:Oracle 密碼修改後系統還用舊密碼連線?
修改 conf/app.conf 中 oracle_password 後需重新啟動程式。
Q10:修改連接埠後不生效?
app.conf 修改後需重新啟動;也可在「系統設定」頁面修改(同樣需重新啟動生效)。
9. 附錄:資料儲存與備份遷移
9.1 資料儲存位置
| 資料 | 位置 | 說明 |
|---|---|---|
| 系統資料(使用者/職責/報表/請求) | conf/data.dat |
本機資料庫(隨包附帶) |
| 授權資訊 | conf/license.dat |
授權檔案 |
| 系統設定 | conf/app.conf |
設定檔 |
| 請求結果檔案 | data/<請求ID>.xlsx、data/<請求ID>.json |
執行時期產生 |
| 暫存檔 | tmp/ |
執行時期暫存檔 |
| 日誌 | 主控台 / 執行目錄日誌 | 程式日誌 |
9.2 備份建議
- 最小備份集:
conf/(app.conf + data.dat + license.dat)+ 選用data/(歷史結果)。 - 完整備份:整個程式目錄(含
conf/、data/)。
9.3 遷移到新伺服器
- 在目標機器依 第 2 章 部署相同版本程式。
- 停止舊程式 → 複製
conf/(app.conf、data.dat、license.dat)到新機器對應位置。 - 如需歷史結果,一併複製
data/。 - 啟動新程式,檢查設定(Oracle 位址、連接埠等)是否適用新環境。
9.4 本文檔(多語言版)的遷移與線上閱讀
- 本說明文件存放於程式目錄
docs/下,依語言命名:zh-CN.md、zh-TW.md、en-US.md、ja-JP.md、ko-KR.md、fr-FR.md、de-DE.md、es-ES.md、th-TH.md、vi-VN.md、ru-RU.md、pt-PT.md。 - 圖片統一存放於
docs/images/目錄,文件內使用本機相對路徑引用(如),無任何第三方遠端圖片連結。遷移文件時請連同docs/images/目錄一起複製,圖片即隨文件走。 - 線上閱讀:所有
.md檔案為純 Markdown,可直接在 Gitea / GitHub / GitLab / Gitee 等平台的文件倉庫中線上渲染閱讀,無需額外工具。 - 各語言版本內容一致,入口見
docs/README.md索引。