About

KTY's Journey

軟體年資2.8 年 總年資4.4 年
Zen landscape with mountains, clouds, and tai chi symbol representing contemplation and balance

背景

高天逸

KTY 是一名 Java 後端工程師,自 2023 年 3 月 起承接軟體專案並投入後端開發,於 2024 年 正式加入企業內部團隊。先前曾任銀行 MA(數位金融專案管理)與交易室大數據研究員。

擅長 Spring Boot 多層架構系統、PostgreSQL 優化、Redis 快取、RabbitMQ、多執行緒與非阻塞 I/O、RESTful API、WebSocket,以及企業級安全(Keycloak/JWT/OAuth2)。熟悉 Jenkins、Docker、Kubernetes 的 CI/CD 流程,並具備 OCI 私有節點雲架構、Java 17 升級、RHEL/JBoss 現代化 的實務經驗。

同時持續探索 AI 知識檢索系統,透過 LangChain 與 PostgreSQL 混合檢索建構 RAG 應用。

專長

後端核心:Spring Boot 多層架構、PostgreSQL/Redis 效能優化、RabbitMQ 非同步處理;安全:Keycloak/JWT/OAuth2;DevOps:Jenkins/Docker/K8s/OCI/OpenShift;AI:LangChain RAG 與 pgvector 混合檢索;兼具 Angular、Flutter 前端整合經驗。

職涯概覽

第一性原理

  • 我習慣把系統當成一盤棋,不是急著寫程式,而是先把問題的結構攤開來。
  • 當別人看到的是 Bug、延遲或相容性錯誤,我看到的卻是謎題的邊界,等待被拆解。我的直覺不是去打補丁,而是去設計一條能長期支撐的解法路徑。
  • 當我問「這個 process 的本質是什麼?」或「為什麼這樣算起來不直覺?」時,其實我不是在找捷徑,而是在挖出背後的底層規律。
  • 這種思維影響了我在 Kubernetes 上的轉折
  • 第一次上 K8s,我走了最簡單的路:把 node 公網全開,雖然能跑,但風險極高
  • 後來我換個角度思考:問題不是『容器怎麼不要掛掉』,而是『整個 cluster 應該自己劃出什麼邊界?』
  • 於是我改用 private node,並透過 operator 自動化治理與隔離,讓整個架構不只是能跑,而是具備韌性
  • 同樣的思維也發生在 RabbitMQ 的經驗裡
  • 當新節點 CPU 被限得太緊,服務一遇到尖峰流量就會窒息
  • 一般的做法可能是調 quota 或加硬體,但我退一步問:真正的問題不是『怎麼撐住這顆 node?』,而是『能不能把需求本身的流動方式重塑?』
  • 導入 RabbitMQ 後,它成為緩衝與分派層,把生產者與消費者解耦,讓尖峰流量被平滑化,系統自然而然具備彈性

前山伏筆

  • EY 審計:VBA 巨集讓我發現熱衷於改造流程。
  • 遠東商銀 Fintech PM(2021-2022):RPA 自動化展現程式碼節省百小時的威力,從那一刻我決定成為工程師。
  • Tarobo投資 Macro Associate(2022-2023):每天寫 Python 處理交易策略,比研究報告更投入。
  • 在程式實驗中,我感受到將邏輯轉成系統的熱情。這種創造與記錄的差異推動我轉職。每個成功的 Debug 都證明我的選擇正確。
  • EY:我用 VBA 自動化對帳,不只是為了省工時,而是被流程重構的優雅吸引
  • 遠東商銀:開發 31 個流程的 RPA 機器人、設計 BNPL 原型,讓我體會到程式能把重複作業變成可規模化的系統
  • 我設計了一個 B2B2C 模型:Bankee 作為入口,引導使用者到虛擬貨幣交易所完成 KYC 開戶——這其實是一個流程事件建模的演練,著重在思考每個交易進出如何串起整個場景
  • Tarobo:串接 Shioaji 逐筆行情、建立自動回測流程,重點不是追求超額報酬,而是看到邏輯能自動化執行,像活的系統一樣
  • 金融強調紀錄,而我渴望創造
  • 於是我進修 JavaScript 與 JavaEE,嘗試 Django 專案、Jenkins 流水線、Docker 部署
  • Toastmasters 又提供另一層養分:把抽象原則轉成可分享的故事
  • 所有這些經歷,構成了我的基礎:每一段程式碼、原型與 debug 都強化了我的選擇——從紀錄現實,走向建構現實

實戰場

  • 核心:Spring Boot 微服務、REST 控制器、安全過濾器。
  • Django ASGI/ORM/REST。
  • Celery 非同步 LLM 檢索。
  • Docker/K8s 微服務。
  • Redis 分布式鎖;RabbitMQ 非同步處理;PostgreSQL 使用複合索引 + GIN 索引後,針對模糊檢索與多欄位查詢的效能,相較於原本單索引方案提升約 5 倍。
  • 演算法:每週 LeetCode 訓練 – 二元樹、DP、回溯、滑動視窗。
  • API Gateway:重寫 JOIN,加複合索引,建快取層
  • 檢索系統:pg_trgm + pgvector 混合,GIN + IVFFlat 索引,fallback 策略降幻覺,API 呼叫限流
  • 基礎設施:Docker 容器化,K8s 自動擴展,OCI Terraform 建 VCN/Bastion/OKE
  • CI/CD:Jenkins pipeline
  • 可靠性:Redis 管理 session,WebSocket STOMP 推播,責任鏈處理例外,JUnit5/Mockito 測試覆蓋
  • 資料:HikariCP 多資料源調優,修 ORM N+1,批次查詢降 GC
  • Spring Boot:熟練分層架構、Spring Security JWT 過濾器、非同步 @Scheduled 任務、RestTemplate/WebClient 優化
  • 演算法:已解 200+ LeetCode 題目,專注生產應用 – 二元樹用於快取/索引,DP 用於任務排程,回溯用於搜尋優化

下個迴圈

  • 核心關注:高併發架構、非阻塞非同步管線與分散式資料系統設計,實作過程以《Designing Data-Intensive Applications》為方法論依據。
  • 產品:設計能整合 AI 模組的資料流,將原型轉化為用戶可用的 MVP。
  • AI:生成式模型、提示工程、RAG 管線、embedding 儲存。
  • 借鏡:像 Modular 一樣組合最優工具鏈,打造最佳系統。
  • 前瞻路線:併發 – 精練 Java CompletableFuture 線程池,探索 Project Loom 虛擬線程,用 WebFlux/Netty 做非阻塞 I/O
  • 佇列 – RabbitMQ 測試耐久與吞吐,設計 backpressure 機制與死信佇列
  • 資料庫 – 增量物化檢視、分片實驗、自適應查詢快取
  • 資料流 – 分片設計,探索如何將大資料集分散到多個節點處理
  • AI – 文件路由、token 成本控制、多模型協作,建立準確率/延遲/成本評估框架
  • 產品 – 把 side project 系統化成 MVP,內建回饋監測,執行 A/B 測試,優化 onboarding 流程
  • 團隊 – 借助 Toastmasters 訓練形成知識庫,建立 PR review 儀式,模組輪值
  • 指北星:以《DDIA》原則導入 AI 系統 – 不可變性、串流優先、容錯、可擴展、可追蹤,每次迭代都讓資料流更韌性,同時保證產品可用

專案經歷

Software Engineer

Tata Consultancy Services 2025/12~Present
  • 2026/01 ~ Present - Thumbnail Asset Manager — 高性能媒體資產管理應用:(一) 資源池管理:實作 VideoPlayerController Pool 解決硬體解碼器競合並優化記憶體使用。(二) 視覺特效:以尋軌控制開發無縫 Boomerang (正序+倒序) 循環效果。(三) 統一快取:建立 AssetCacheManager 序列化管理圖片與影片的持久化快取。(四) 自動探測:實作 VideoProber 進行背景資產掃描與自動化發現。
    • Flutter 核心架構設計、效能調優與資源池管理、視覺效果與快取策略實作
    • ThumbManager
      • 資料結構:Controller Pool / Asset Cache / Prober
      • 操作邏輯:Memory Optimization & Async Probing
      • 存取介面:Flutter UI + Local Cache
  • 2026/03 ~ Present - 信用狀架構優化:提升模組化與可維護性。(一) 全域路由註冊:應用 Registry 與 Singleton 模式提煉 API 路由,建立 Single Source of Truth 並移除硬編碼。(二) 網關介面整合:以 Adapter 與 Facade 模式實作 Gateway 轉換規則,整合既有介面並統一前端規格。(三) 配置外部化:維護環境參數矩陣,確保程式邏輯與配置分離。
    • 架構解耦與路由註冊、網關適配邏輯開發、環境配置矩陣維護
    • LCQueryArch
      • 資料結構:Global Registry / Gateway Schemas / Config Matrix
  • 2025/12 ~ 2026/03 - 列印確認書功能:主導橫跨多面向的全端功能交付。(一) 前端建構:開發 5 個 Angular 元件並實作三層分離。(二) 元件解耦:抽離共用邏輯策略。(三) 錯誤處理:以責任鏈模式建立統一的回饋鏈路。(四) 路由配置:完成 8 條 API 路由與 Java Header Inserter Beans 設定。
    • Angular 元件開發與架構分離、共用邏輯抽離、網關路由與掛勾元件配置
    • PrintConfirmGate
      • 資料結構:Angular Components/Services/Java Beans

Open Source Backend Engineer

Mercuries Life Insurance 2024/3~2025/11
  • 2025/04 ~ Present - 文件管理系統:建置多層次 Spring Boot 應用,整合完整後端功能(@EnableRetry、@EnableCaching、@EnableRedisHttpSession、@EnableWebSecurity、@EnableMethodSecurity);設計雙 PostgreSQL 資料來源與 HikariCP 連線池,實作複合索引、批次查詢與 N+1 查詢優化;實作 WebSocket 與 RESTful API;建立 JUnit5/Mockito 單元測試與 Grafana/Prometheus 監控
    • 設計文件權限與版本控管 API、以 WebSocket 推送檔案事件通知、優化 PostgreSQL 索引與批次查詢
    • DocCore
      • 資料結構:Document/Version/ACL
      • 操作邏輯:版本控管與生命週期
      • 存取介面:REST + WebSocket
  • 2025/01 ~ 2025/03 - 外部專區與入口網站:實作 Redis 基礎快取系統,包含 TTL 管理、會話儲存與分布式鎖,以應對高併發情境;配置 @EnableRedisHttpSession 與會話逾時及固定攻擊防護;建立完整的錯誤處理系統,包含有序的異常處理器
    • 規劃 Redis 快取/Session 策略(TTL、分散式鎖)、落實有序全域錯誤處理、調校高併發端點
    • PortalCache
      • 資料結構:Session/CacheEntry
      • 操作邏輯:TTL 快取與分散式鎖
      • 存取介面:REST + Redis Session
  • 2024/08 ~ 2024/09 - DevOps 管理後台:配置企業級安全防護(@EnableWebSecurity、@EnableMethodSecurity、JWT 認證、OAuth2 資源伺服器、CORS);使用 Keycloak 與 RedHat SSO 設計並實作企業級 SSO 解決方案,確保安全驗證
    • 實作 JWT/OAuth2 資源伺服器、整合 Keycloak SSO、制定細粒度角色授權規則
    • SecAuth
      • 資料結構:User/Role/Policy
      • 操作邏輯:JWT 驗證、RBAC 與 SSO
      • 存取介面:OAuth2 endpoints + 受保護 REST
  • 2024/06 ~ 2024/07 - DevOps Team Lab:設計 OCI VCN 架構,包含 Bastion、Public/Private Subnets、OKE 叢集與負載平衡器,使用 Terraform 建置
    • 以 Terraform 佈署 OCI VCN 與 OKE、配置負載平衡與路由、自動化叢集啟動流程
    • InfraIaC
      • 資料結構:VCN/Subnet/OKESpec
      • 操作邏輯:宣告式佈署與路由
      • 存取介面:Terraform modules/variables
  • 2024/03 ~ 2024/05 - 系統現代化與部署:建置 JBoss War Deployment CI/CD Pipeline for UAT/PROD(10+ UAT 伺服器);實作 Linux 離線部署策略,並使用 Kubernetes 與 Docker Compose 將應用容器化;主導將 JBoss、MVC 與 Spring/Spring Boot 應用從 Java 8/11 升級至 Java 17;為 20+ 台伺服器將 RHEL 從 7 升級至 8
    • 建立 JBoss WAR CI/CD、以 Kubernetes/Docker Compose 進行容器化、執行 Java 17 與 RHEL 8 升級與滾動發佈
    • ReleaseKit
      • 資料結構:Pipeline/Artifact/DeploymentPlan
      • 操作邏輯:CI/CD 階段與滾動發佈與健康檢查
      • 存取介面:Jenkins pipeline + K8s manifests

Freelancer

Self-Employed (Client Sources Confidential) 2023/3~2024/1
  • 2023/10 ~ 2024/01 - 客戶專區附加的問答輔助系統(FastAPI + LangChain):個性化 RAG 聊天機器人,具混合檢索
    • 建置 pg_trgm/pgvector RAG 流程(GIN/IVFFlat)、整合多 LLM 回退與無知識處理、設計 Prompt 與評估
    • RAGCore
      • 資料結構:ArticleEmbedding/TrigramIndex/ChatHistory
      • 操作邏輯:混合檢索、Prompt 組裝與回退
      • 存取介面:FastAPI + LLM adapters
  • 2023/05 ~ 2023/09 - SmartSync Crawler — 線上零售商產品資訊爬蟲插件(PHP + WordPress):自動化產品爬蟲插件,具安全管理介面
    • 設計 WordPress 插件/管理介面、實作 XPath URL 收集與產品提取、開發樣式化描述與 CSV 匯出(UTF-8 BOM/正規化)並強化超時處理
    • SmartSync
      • 資料結構:URL 收集/數據提取/內容處理/CSV 輸出
      • 操作邏輯:XPath 解析、DOM 操作、內容過濾、UTF-8 編碼
      • 存取介面:WordPress HTTP API + CSV + 管理介面
  • 2023/03 ~ 2023/05 - 餐廳訂位與管理平台(Vue 3 + Spring Boot):建置訂位 + CMS 系統,含 Vue 3 前端與 Spring Boot API
    • 設計 JWT/RBAC、開發核心 CMS 模組(員工/客戶/分店/優惠券/菜單/訂單/預約管理)、實作 BI 儀表板與 Docker 部署
    • 餐廳管理系統
      • 資料結構:Request → Router → Controller → Service → Repository → Database 配合 POJO 實體
      • 操作邏輯:JWT/RBAC、訂單/預約工作流程、商業分析
      • 存取介面:REST API + JWT + SQL Server

Macro Associate

Tarobo Investment Advisors 2022/9~2023/1
  • 2022/12 ~ 2023/01 - 維護並強化橫跨 10+ 個資料庫的數據基礎設施,以支援全面的市場分析,優化多源金融數據整合的數據流程架構
  • 2022/11 ~ 2022/12 - 分析宏觀經濟指標,包括貨櫃航運趨勢、美國零售銷售、台幣資金流向、外匯動態與 EPFR 基金流向,以制定跨資產配置策略,將市場行為模式對應至投資決策框架
  • 2022/10 ~ 2022/11 - 每日提供涵蓋新興市場(墨西哥、印度、巴西)的市場情報報告,並進行即時分析,運用 scikit-learn、statsmodels 與 scipy 進行數據分析與統計建模,透過系統化數據流程分析將複雜市場數據結構化為可執行洞察
  • 2022/09 ~ 2022/10 - 建置自動化報表工作流程;整合永豐金 Shioaji API 進行市場數據攝取與策略原型開發,設計即時市場分析的數據處理管道;運用 pandas、numpy 與 scipy 進行期貨價格與隱含波動率數據分析,實作自動化回測框架與量化交易策略(紅K策略、基於隱含波動率動態切換的再平衡策略)

Fintech PM, MA Program

Far Eastern Int'l Bank 2021/8~2022/5
  • 2022/04 ~ 2022/05 - 提出跨產業聯盟策略,3 項提案通過內部審查,其中 2 項成功落地,分析整合需求與數據交換協議
  • 2022/02 ~ 2022/03 - 管理數位支付部門 31 項作業流程,確保合規與效率,設計工作流程邏輯與數據驗證程序;導入開源 RPA 解決方案,使用 Python 搭配 Selenium 進行流程自動化與工作流程優化
  • 2021/12 ~ 2022/01 - 進行 BNPL、加密貨幣與線上小額信貸產品設計等新興金融科技趨勢研究,並每週提交報告,將產品功能對應至用戶行為模式
  • 2021/10 ~ 2021/11 - 撰寫 20+ 份商業計畫書,並與大型電信公司合作成功提出 2 個數位支付專案,分析用戶旅程流程與支付處理邏輯
  • 2021/08 ~ 2021/09 - 使用 Power BI 建置視覺化儀表板,設計資料模型與圖表以支援主管與產品 KPI 檢視,將複雜業務需求轉化為結構化數據流程

Auditor

EY 2019/9~2020/3
  • 2020/02 ~ 2020/03 - 稽核並分析 20+ 份資產負債表/損益表及 3+ 份現金流量表,為合規與分析目的結構化財務報告數據流程
  • 2020/01 ~ 2020/02 - 編制利率與外幣曝險敏感度分析,及前十大供應商/客戶集中度分析,建立數據驅動的風險評估模型
  • 2019/12 ~ 2020/01 - 執行 40+ 次實質性分析程序,以驗證科目變動並識別潛在差異,開發財務數據分析與異常檢測的系統化方法
  • 2019/11 ~ 2019/12 - 協調 8 個專業團隊執行金融服務客戶(含股票與債券基金)的稽核程序,將複雜金融產品結構對應至稽核測試框架
  • 2019/10 ~ 2019/11 - 為 20+ 客戶專案執行財務報表稽核,範圍涵蓋流動資產、固定資產、負債及權益,分析財務數據流程與交易處理邏輯
  • 2019/09 ~ 2019/10 - 使用 Excel VBA 自動化鉤稽流程,加速稽核底稿作業,設計財務數據完整性的邏輯驗證程序

教育

RedHat

2024/12
  • Red Hat JBoss Application Administration I (AD248)

iSpan

2023/10~2024/2
  • JavaEE Career Development Program

FreeCodeCamp.com

2023/7~2023/9
  • JavaScript Algorithms and Data Structures
  • Data Visualization

Hong Kong Polytechnic University

2020/9~2021/9
  • Master of Finance in Investment Management

Fu Jen Catholic University

2013/9-2018/6
  • B.B.A. in Finance and International Business

Temple University

2016/8-2017/5
  • Global Exchange Program

技術經驗

Software Engineer

Tata Consultancy Services 2025/12~Present
Frontend Development
Angular.js TypeScript SCSS / CSS i18n / Localization Registry Pattern Singleton Pattern Single Source of Truth
Backend Development
Java
Java 8 11 17 21
  • 實作後端商務邏輯與中介控制(Java),透過撰寫及修改 .java 檔案(如 HeaderConfigGSP.java),在系統中建立攔截元件(Inserter Beans),以便在 Request 送往系統後台前,動態插入指定的 Header 等中介層處理
  • 進行路由與服務設定(XML 配置),異動了諸如 service_extn_gsp.xml 的配置檔,用來宣告、綁定 API 的呼叫 Method (例如從 get 換成 post) 及配對正確的請求參數等
General
RESTful API API Gateway XML Configuration Chain of Responsibility Adapter Pattern Facade Pattern Externalized Configuration
  • 實作 Gateway 介面整合,應用轉接器 (Adapter) 與外觀 (Facade) 模式封裝底層複雜的既有系統介面,抹平前後端規格差異。維護外部化配置 (Externalized Config) 參數表,落實配置與程式碼分離原則確保環境遷移靈活性
                            flowchart LR
    subgraph "Frontend (Angular.js)"
        A["Angular Components\n(View / Logic / Style)"]
        AR["Angular Routing Module"]
        REG["Global Config Registry\n(Registry + Singleton Pattern)"]
        A --> AR
        A --> REG
    end

    subgraph "Gateway Layer (Java)"
        GW["Java Gateway"]
        INS["Header Inserter Beans\n(Java Interceptors)"]
        ADP["Adapter / Facade\n(XML + JSON Schema Mapping)"]
        EXT["Externalized Config\n(Multi-env Config Matrix)"]
        GW --> INS
        GW --> ADP
        GW --> EXT
    end

    subgraph "Backend Systems"
        BE["Legacy Backend Services"]
    end

    AR -->|"REST API Calls"| GW
    REG -->|"Centralized Route Lookups"| GW
    INS -->|"Injects Headers"| BE
    ADP -->|"Transforms Payloads"| BE

    classDef fe fill:#e8f4fd,stroke:#2196f3,color:#0b1a33
    classDef gw fill:#fff3e0,stroke:#ff9800,color:#0b1a33
    classDef be fill:#e8f5e9,stroke:#43a047,color:#0b1a33
    class A,AR,REG fe
    class GW,INS,ADP,EXT gw
    class BE be
                          

Open Source Backend Engineer

Mercuries Life Insurance 2024/3~2025/11
Backend Development
Java
Java 8 11 17 21 Spring Framework 6 Spring Boot 2 3 Spring WebFlux Netty Spring Session Redis Quarkus 3 Reactive Streams ExecutorService ConcurrentHashMap Virtual Threads ForkJoinPool VirtualThreadTaskExecutor Continuation Fiber JPA Mybatis 3 JDBCTemplate HikariCP JUnit 5 Mokito Servlet 5 Maven RestTemplate @RabbitListener
  • 使用不同設計模式進行解耦 - https://github.com/Vinskao/TY-Multiverse-Backend
  • 使用 Java ExecutorService、ConcurrentHashMap 與非同步任務實作即時 WebSocket 後端,處理多執行緒訊息佇列。透過頻道推送方式將系統指標與訂單資訊傳送至前端,確保不同資料源非阻塞處理
  • 使用 Spring Boot 框架開發 CRUD API,並整合 SSO 伺服器
  • 使用 JPA、MyBatis 與 JDBCTemplate 在 Spring Boot 與傳統 JBoss 應用中實作資料存取層。設計實體映射與 SQL 查詢以支援 CRUD 與批次操作
  • 使用 Spring MVC 設計並實作訂單處理與帳戶管理之 RESTful API。以 JUnit 5 與 Mockito 實作單元與整合測試,驗證控制器、服務及資料層互動。應用 Servlet 5 Filter 處理 CORS 與驗證,並以 Maven 管理建置流程
                                        classDiagram
                                          %% Application Layer
                                          class TYMBackendApplication {
                                              +@EnableWebSocket
                                              +@EnableRetry
                                              +@EnableAsync
                                              +@EnableScheduling
                                              +@EnableCaching
                                              +@EnableRedisHttpSession
                                              +@EnableWebSecurity
                                              +@EnableMethodSecurity
                                          }
                                          
                                          %% Security Layer
                                          class SecurityConfig {
                                              +@EnableWebSecurity
                                              +@EnableMethodSecurity
                                              +JWT Authentication
                                              +OAuth2 Resource Server
                                              +CORS Configuration
                                          }
                                          
                                          class KeycloakController {
                                              +OAuth2 Redirect
                                              +Token Exchange
                                              +User Info
                                              +Token Introspect
                                          }
                                          
                                          class Auth {
                                              +User Management
                                              +Admin Operations
                                              +Token Validation
                                          }
                                          
                                          %% Configuration Layer
                                          class RedisConfig {
                                              +@EnableCaching
                                              +RedisConnectionFactory
                                              +RedisTemplate
                                              +TTL Management
                                              +damage-calculations
                                              +tymb:sessions
                                              +Distributed Lock
                                              +Lua Scripts
                                          }
                                          
                                          class PrimaryDataSourceConfig {
                                              +PrimaryHikariCP
                                              +HikariCP Connection Pool
                                              +Connection Management
                                              +Connection Timeout
                                              +Leak Detection
                                          }
                                          
                                          class PeopleDataSourceConfig {
                                              +PeopleHikariCP
                                              +HikariCP Connection Pool
                                              +Connection Management
                                              +Connection Timeout
                                              +Leak Detection
                                          }
                                          
                                          class SessionConfig {
                                              +@EnableRedisHttpSession
                                              +Redis Session Store
                                              +Session Timeout
                                              +Session Fixation
                                              +Session Security
                                              +Concurrent Session Control
                                          }
                                          
                                          %% Infrastructure Layer
                                          class Database {
                                              +PostgreSQL Primary
                                              +PostgreSQL People
                                              +Indexed Queries
                                              +Batch Operations
                                          }
                                          
                                          class Redis {
                                              +Cache Storage
                                              +Session Store
                                              +Distributed Lock
                                              +Concurrency Control
                                          }
                                          
                                          %% Layer Relationships
                                          TYMBackendApplication --> SecurityConfig
                                          TYMBackendApplication --> RedisConfig
                                          TYMBackendApplication --> PrimaryDataSourceConfig
                                          TYMBackendApplication --> PeopleDataSourceConfig
                                          TYMBackendApplication --> SessionConfig
                                          
                                          SecurityConfig --> KeycloakController
                                          SecurityConfig --> Auth
                                          SecurityConfig --> SessionConfig
                                          
                                          SessionConfig --> RedisConfig
                                          RedisConfig --> Redis
                                          
                                          PrimaryDataSourceConfig --> Database
                                          PeopleDataSourceConfig --> Database
                                      
                                        classDiagram
                                          class SecurityConfig {
                                              +@EnableWebSecurity
                                              +@EnableMethodSecurity
                                              +JWT Authentication
                                              +OAuth2 Resource Server
                                              +CORS Configuration
                                              +Stateless Keycloak Endpoints
                                          }
                                          
                                          class JWTValidation {
                                              +OAuth2ResourceServer
                                              +JwtDecoder
                                              +CustomJwtGrantedAuthoritiesConverter
                                              +Bearer Token Resolver
                                          }
                                          
                                          class Authorization {
                                              +ROLE_GUEST
                                              +ROLE_MANAGE_USERS
                                              +ROLE_ADMIN
                                              +ROLE_USER
                                              +permitAll() for /people/names
                                              +authenticated() for protected endpoints
                                          }
                                          
                                          class SessionManagement {
                                              +Redis Session Storage
                                              +Session Timeout
                                              +Session Fixation
                                              +@EnableRedisHttpSession
                                              +tymb:sessions namespace
                                          }
                                          
                                          class KeycloakController {
                                              +OAuth2 Redirect
                                              +Token Exchange
                                              +User Info
                                              +Token Introspect
                                              +Dynamic redirectUri
                                          }
                                          
                                          SecurityConfig --> JWTValidation
                                          SecurityConfig --> Authorization
                                          SecurityConfig --> SessionManagement
                                          SecurityConfig --> KeycloakController
                                      
                                        classDiagram
                                          class GlobalExceptionHandler {
                                              +Chain of Responsibility
                                              +Error Response Builder
                                          }
                                          
                                          class BusinessApiExceptionHandler {
                                              +@Order(0)
                                              +BusinessException
                                          }
                                          
                                          class DataIntegrityApiExceptionHandler {
                                              +@Order(1)
                                              +DataIntegrityViolationException
                                          }
                                          
                                          class ValidationApiExceptionHandler {
                                              +@Order(2)
                                              +MethodArgumentNotValidException
                                          }
                                          
                                          class DefaultApiExceptionHandler {
                                              +@Order(Integer.MAX_VALUE)
                                              +Generic Exception
                                          }
                                          
                                          GlobalExceptionHandler --> BusinessApiExceptionHandler
                                          GlobalExceptionHandler --> DataIntegrityApiExceptionHandler
                                          GlobalExceptionHandler --> ValidationApiExceptionHandler
                                          GlobalExceptionHandler --> DefaultApiExceptionHandler
                                      
Python
Python 3 Django Rest Django ASGI WSGI Worker Pattern Poetry
Node.js
Node.js Express.js Async/Await Event Loop Mongoose.js
  • 使用 Mongoose.js 為 MongoDB 儀表板定義 Schema 與查詢
PHP
General
RESTful API Swagger Microservices API Gateway Spring Cloud Gateway Web Crawler XML Configuration Chain of Responsibility Adapter Pattern Facade Pattern Externalized Configuration
Frontend Development
Vue
Vue.js 2 3
React
React.js React Hooks React Context
Angular
Angular.js
General
JavaScript TypeScript jQuery AJAX Axios Bootstrap SweetAlert2 HTML2Canvas JSPDF Jest Astro.js MDX Handlebars Thymeleaf CKEditor 5 Webpack Bundle D3 SCSS / CSS i18n / Localization Registry Pattern Singleton Pattern Single Source of Truth
  • 建立整合 React useState 的 Astro 網站
  • 開發 Thymeleaf MVC 及 Handlebars CRUD API
  • 開發 Vue.js 2/3 並整合 Vuex
  • 使用 Angular 作為 gateway (或前台介面) 的最主要框架,異動了大量的 .component.ts 與 .html 檔案(如修改 showMessage 為 alertDialog / errLabel 的 UI 互動行為,及元件狀態資料刷新邏輯),並管理 Angular Routing 路由 (app-routing.module.ts)
  • 以 SCSS / CSS 進行網頁視覺樣式開發,修改全站共用元件庫的 UI_Workspace/src/css/widget.scss 以及各個 Angular 模組專屬的 .scss(如 MaintainPrintingOfTransactionNotification.scss)
  • 開發多國語系在地化 (Localization / i18n),異動 package.js、package_zh.js 檔案管理前端多國語系字首對照表,讓應用程式能呈現包含中文的對應顯示資源
  • 將前端 API 路由提煉至全域配置中心,應用 Registry 與 Singleton 模式建立 Single Source of Truth,移除硬編碼路徑並落實高內聚低耦合的架構設計
Mobile & App Development
Mobile Frameworks
Flutter 3.x Dart 3.x MVVM Architecture Dio / Networking Provider / State
Performance & Architecture
AssetCacheManager Controller Pool VideoProber shared_preferences flutter_cache_manager
  • 使用 Flutter 與 Dart 開發高性能媒體播放應用程式。
  • 實作複雜的 Boomerang (正序+倒序) 特效與視訊控制器資源池管理。
  • 設計跨平台媒體管理的統一快取系統。
  • 透過持久化探測與背景任務管理自動化資產發現流程。
Database
Relational
PostgreSQL R2DBC PGVector pg_trgm N-Gram Index Trigram Search Fuzzy Search Full Text Search GIN Index Hybrid Search MSSQL SQLite MySQL Informix
  • 將 PostgreSQL 與 Keycloak SSO、LangChain 及多個後端 REST API 框架整合
  • 維護 JBoss EAP 中的 MSSQL 資料存取層
  • 將 JBoss 從 EAP 7 升級至 EAP 8,並為 20+ 伺服器將 JBoss 7 容器化
  • 使用 PostgreSQL 交易區塊(搭配 Spring @Transactional)確保訂單撮合、資料插入與持倉更新的原子性;設計複合索引(如 status + timestamp)以高效查詢最新紀錄,並避免不必要索引以平衡寫入效能
  • 使用 PostgreSQL pg_trgm 擴展實作 N-Gram 索引以支援全文檢索,實現跨多語言的模糊匹配與相似度搜索。建構混合檢索系統結合 N-Gram 與向量搜索,以實現語義與字元層級的文本檢索
NoSQL
MongoDB Firebase Redis RabbitMQ Message Queue Asynchronous Processing Producer-Consumer Pattern Celery
  • 部署 Redis 伺服器,搭配 producer(具訪問計數 API 的 API 伺服器)與 consumer(獨立部署)服務,記錄網站訪問次數,以因應大量並發請求
  • 整合 Redis 進行表單狀態管理系統,實作會話儲存與暫存資料快取,以 Lua 腳本實作原子操作並透過應用程式層級整合進行資料持久化與狀態同步。
  • 實作基於 RabbitMQ 的非同步訊息處理架構,採用 producer-consumer 模式。設計 TYMBackendApplication 作為 producer,整合 AsyncMessageService 與 RabbitMQConfig 進行訊息發布。部署 RabbitMQ 4.1 Management 伺服器作為訊息代理,具備佇列管理與非同步處理能力。建構專用 Consumer Pod 進行訊息處理與資料庫寫入操作,確保可靠訊息傳遞與容錯機制。此架構實現後端服務與資料庫操作間的可擴展、解耦通訊,支援高吞吐量訊息處理並保證傳遞語義。

                                      graph LR
    A[Backend<br/>Spring Boot<br/>REST Endpoints] --> B[RabbitMQ<br/>Message Queue]
    B --> C[Consumer<br/>Spring Boot<br/>JDBC Processing]
    C --> D[PostgreSQL<br/>Database]
    
    %% Vivid, high-contrast class colors for light theme
    classDef producer fill:#bbdefb,stroke:#1e88e5,color:#0b1a33
    classDef mq fill:#e1bee7,stroke:#8e24aa,color:#0b1a33
    classDef consumer fill:#c8e6c9,stroke:#2e7d32,color:#0b1a33
    classDef database fill:#ffcdd2,stroke:#c62828,color:#0b1a33
    
    class A producer
    class B mq
    class C consumer
    class D database
                                    
Infrastructure & Deployment
Containerization & Orchestration
Docker Podman Kubernetes Bare Metal K8S OCP K8S
  • 為資料庫資料持久化實作 PV 與 PVC
IaC & Automation
Terraform Ansible Helm YAML
  • 使用 Terraform 在 OCI 佈建基礎設施並配置網路、運算與儲存資源。透過 Ansible 自動化多節點部署。編寫並模板化 Helm Chart 以在多命名空間中部署與升級應用
Servers & Middleware
JBoss EAP 7 8 Tomcat RabbitMQ
  • 為容器化 JBoss EAP 7 設定 Volume,以支援即時配置更新
  • 為 JBoss EAP 8 及 JBoss 容器設定 systemctl,確保重新啟動後自動啟動
System Architecture
Thread Pool
  • 實作執行緒池模式以處理高性能應用中的併發任務與資源管理
Monitoring & Visualization
Grafana Prometheus Jolokia Instana Resilience4j Circuit Breaker Micrometer Spring Boot Actuator
  • 整合 Prometheus 與 Spring Boot Actuator 收集 JVM 與自訂指標,並以 Grafana 儀表板視覺化即時資料。透過 Jolokia 監控 JBoss 執行狀態,並以 Instana 收集 Trace
CI/CD
Jenkins Docker BuildKit GitHub Package
  • 搭建 Jenkins 伺服器,並為 Spring Boot、Django、Laravel 與 Astro 專案實作 CI/CD 流水線

                                graph LR
                                  A[GitHub Repository] --> B[Clone and Setup]
                                  B --> C[Build with Node.js]
                                  C --> D[Build Docker Image with BuildKit]
                                  D --> E[Push to Docker Hub]
                                  E --> F[Deploy to Kubernetes]
                              
Network
Protocols
HTTP HTTP/1.1 HTTP/2 WebSocket STOMP SSL/TLS
  • 使用 WebSocket 建置聊天室與 Spring Boot Actuator 指標匯出器,並以 STOMP 擔任訊息代理
Load Balancing & Ingress
Ingress Nginx Ingress Controller Nginx Static File Server Public Load Balancer NAT Gateway Egress cert-manager
  • 部署 Nginx Ingress Controller,透過 Ingress 暴露所有服務並以 cert-manager 發行 TLS 憑證,同時使用 Nginx Static File Server 提供靜態檔案
  • 對無狀態服務採用 Round-Robin 負載均衡,並整合 Nginx 以傳送靜態資源。使用 cert-manager 搭配 ACME 發行並自動續期 Ingress TLS 憑證
Cloud
Platforms
OCI OKE Bastion GCP
  • 在 OCI 上部署裸機 K8S 伺服器,使用 Public Subnet 與 Ingress 設定,並規劃遷移至 GCP 的 GKE,將資料庫放置於 Private Subnet。評估兩雲環境的成本效益與網路安全
  • 在 OKE 架構中,Bastion 置於 Public Subnet,Operator VM 置於 Private Subnets,OKE Control Plane 使用 Private Endpoint;配置 Public/Internal LB 與路由表(IGW/NAT/Service Gateway),透過 Bastion SSH Proxy 執行 kubectl 存取。

                                      flowchart LR
                                      user["User"] -->|SSH 22| bastion["Bastion (Public Subnet)"]

                                      subgraph OCI VCN
                                        direction LR

                                        subgraph Public["Public Subnets"]
                                          bastion
                                          pubLB["Public LB Subnet (OCI LB - Reserved IP)"]
                                        end

                                        subgraph Private["Private Subnets"]
                                          operator["Operator VM"]
                                          cp["OKE Control Plane (Private Endpoint)"]
                                          workers["Worker Nodes (NodePool size=2, A1.Flex 1c/8GB/50GB)"]
                                          intLB["Internal LB Subnet"]
                                        end

                                        subgraph Gateways["Network Gateways"]
                                          ig["Internet Gateway"]:::net
                                          nat["NAT Gateway"]:::net
                                          sg["Service Gateway"]:::net
                                        end

                                        pubRT["Public Route Table"]:::net --> ig
                                        privRT["Private Route Table"]:::net --> nat
                                        privRT --> sg

                                        bastion -.-> pubRT
                                        pubLB -.-> pubRT

                                        operator -.-> privRT
                                        workers -.-> privRT
                                        intLB -.-> privRT
                                      end

                                      bastion -->|SSH Proxy| operator
                                      operator -->|kubectl 6443| cp
                                      pubLB --> workers
                                      intLB --> workers

                                      %% Improve contrast with vivid class definitions
                                      classDef host fill:#eef3fb,stroke:#1f5bff,color:#0b1a33;
                                      classDef control fill:#ede7f6,stroke:#5e35b1,color:#0b1a33;
                                      classDef compute fill:#e8f5e9,stroke:#43a047,color:#0b1a33;
                                      classDef net fill:#fff3e0,stroke:#fb8c00,color:#0b1a33;

                                      %% Assign classes for better differentiation
                                      class bastion host;
                                      class pubLB,intLB,cp control;
                                      class operator,workers compute;
                                      class pubRT,privRT net;
                                    
Tools
Systems
Linux RHEL 7 8 Runtime Image Ubuntu
  • 為 20+ 台伺服器將 RHEL 從 7 升級至 8
Scripting
Shell Bash
  • 使用 Bash 與 Shell 腳本自動化 RHEL 系統的備份、部署與日誌輪轉。利用 Python 腳本呼叫 API、處理日誌,並與第三方服務整合以進行資料抽取與清理
Others
Cursor Antigravity Yum Repository Satellite Google Apps Script GitHub Submodule Claude Code Claude Agent SDK MCP
  • 使用 Yum Repository 與 Satellite 取得檔案以升級 RHEL
  • 開發 WordPress 外掛,抓取 Elementor 電商表單的雙層式資料
Security & Authentication
Identity Provider / SSO
Keycloak 18 26 Keycloak SPI RedHat SSO 7
Protocols & Flows
OAuth2 Authorization Code Flow JWT
Framework & Keys
Spring Security Digital Signature Java Keystore
  • 建置 Keycloak SSO 伺服器,並實作授權碼 OIDC 流程以連接 Public 與 Confidential Client - https://github.com/Vinskao/keycloak-client-demo
  • 在 K8S 上將 Keycloak 18 升級至 26,並將資料持久化至 PostgreSQL
  • 將 Keycloak SPI 從 Quarkus 2 升級至 Quarkus 3,並以 Informix Stored Procedure 實作 Keycloak 使用者密碼驗證流程
  • 使用 CDI 將 EntityManager 注入 DAO 層

                                sequenceDiagram
                                  participant User as User
                                  participant App as Application
                                  participant Auth as Authorization Server
                                  participant API as Resource Server
                                  
                                  User->>App: 1. Access Application
                                  App->>Auth: 2. Redirect to Authorization Page
                                  User->>Auth: 3. Login and Authorize
                                  Auth->>App: 4. Return Authorization Code
                                  App->>Auth: 5. Exchange Code for Token
                                  Auth->>App: 6. Return Access Token
                                  App->>API: 7. Access Resources with Token
                                  API->>App: 8. Return Protected Resources
                              
AI
Frameworks & APIs
LangGraph pgvector IVFFlat Index Vector Search N-Gram in RAG Trigram Similarity Fuzzy Text Matching
  • Maya Sawa V1:使用 FastAPI 框架與 LangChain 及 OpenAI API 構建具備多角色個性系統的知識型 RAG 聊天機器人。實作名稱檢測以獲取角色檔案、語義搜尋以查找人物,以及向量相似度搜尋以獲取文件上下文。透過 LLMChain 與 PromptTemplate 建立查詢流程,並使用個性提示詞建構器。解析並嵌入文件,透過 FastAPI 提供查詢介面,並以多工具與 Chain 協調流程。整合 Redis 進行聊天歷史管理與會話儲存。建構多層架構包含 API 層(FastAPI Router)、Q&A 層(QAChain、PageAnalyzer)、支援層(NameDetector、ProfileManager、PeopleWeaponManager、PersonalityPromptBuilder、VectorStore、ChatHistoryManager)以及外部服務整合(OpenAI API、People System API、PostgreSQL、Redis)。
  • Maya Sawa V2:使用 Django 框架建構進階問答系統,透過 pg_trgm 與 pgvector 擴展增強系統,結合 PostgreSQL 中的 trigram 與向量搜尋能力。實作全文檢索管道,使用 GIN 索引進行 trigram 搜尋,IVFFlat 索引進行向量搜尋。透過 AIResponseService 新增多 AI 提供者支援(OpenAI、Gemini、Qwen、Mock)。建構完整的服務層,包含 FilterChainManager、KMSourceManager、ChatHistoryService 與 AIResponseService。增強資料層,整合 PostgreSQL、Redis 與 Celery Broker。在保持向後相容性的同時,新增模型管理、健康檢查與舊版聊天歷史支援等進階功能。
  • 在 AI 應用中實作 N-Gram 索引技術以支援模糊文本匹配與語義搜索。使用 PostgreSQL pg_trgm 擴展進行 trigram 相似度搜索,在 RAG 系統中實現容錯查詢與多語言文本檢索。

Maya Sawa V2
                                        graph TD
  %% User and Entry
  U["User"] --> Q["ask-with-model API<br/>question"]
  Q --> P["Full-text Retrieval Pipeline"]

  %% Retrieval Process
  subgraph "Pipeline"
    P --> N["Normalize/Lowercase<br/>trim punctuation"]
    N --> E{"Compute Embedding?"}
    E -- Yes --> EM["OpenAI Embeddings<br/>(text-embedding-3-small) → qvec"]
    E -- No --> SKIP["Skip vector branch"]

    %% PostgreSQL Retrieval (Trigram & Vector)
    subgraph "PostgreSQL"
      direction LR
      PG1["Trigram Search<br/>content % :query<br/>similarity(content, :query) as text_sim"]:::trgm
      PG2["Vector Search<br/>1 - (embedding <=> :qvec) as vec_sim"]:::vec
      IDX1["GIN Index<br/>idx_articles_content_trgm<br/>(content gin_trgm_ops)"]:::idx
      IDX2["IVFFlat Index<br/>idx_articles_embedding_ivfcos<br/>(embedding vector_cosine_ops)"]:::idx
      EXT1["EXTENSION pg_trgm<br/>set_limit(:min_sim)"]:::ext
      EXT2["EXTENSION pgvector"]:::ext
    end

    EM --> PG2
    SKIP -.-> PG1
    N --> PG1
    PG1 --> MRG["Merge & Rank<br/>score = 0.6*text_sim + 0.4*vec_sim"]
    PG2 --> MRG
    MRG --> TOPK["Top-K Articles"]
  end

  %% Post-processing and Response
  TOPK --> CTX["Build Context from Articles<br/>(title + snippet)"]
  CTX --> AI["LLM Call (OpenAI/Gemini/Qwen/Mock)"]
  AI --> RESP["Answer + Citations/No Knowledge Notice"]
  RESP --> RDS["Redis ChatHistory<br/>chat:session:{sid}"]
  RESP --> OUT["API Response"]

  %% Database Table and Indexes
  subgraph "articles schema"
    TBL["articles<br/>- id BIGSERIAL PK<br/>- file_path VARCHAR(500) UNIQUE<br/>- content TEXT NOT NULL<br/>- file_date TIMESTAMP NOT NULL<br/>- embedding vector"]:::tbl
  end
  TBL -. indexed by .-> IDX1
  TBL -. indexed by .-> IDX2

  %% Styles
  classDef trgm fill:#e3f2fd,stroke:#1e88e5,stroke-width:1px
  classDef vec fill:#fce4ec,stroke:#d81b60,stroke-width:1px
  classDef idx fill:#fff3e0,stroke:#fb8c00,stroke-width:1px
  classDef ext fill:#ede7f6,stroke:#5e35b1,stroke-width:1px
  classDef tbl fill:#f1f8e9,stroke:#43a047,stroke-width:1px
                                      
                                        graph TB
    subgraph "Frontend Layer"
        A[User Interface] --> B[API Client]
    end

    subgraph "API Layer"
        B --> A1[ask-with-model<br/>Async Processing]
        B --> A2[task-status<br/>Task Status Query]
        B --> A3[available-models<br/>Available Models List]
        B --> A4[add-model<br/>Add Model]
        B --> A5[chat-history<br/>Chat History]
        B --> A6[legacy-chat-history<br/>Legacy Chat History]
        B --> A7[healthz<br/>Health Check]
    end

    subgraph "Processing Layer"
        P1[Async Processing<br/>Celery Task]
        P2[Task Status Management<br/>Redis/Celery]
    end

    subgraph "Agent Service Layer"
        AS[MayaAgentService<br/>Unified Service Entry]
    end

    subgraph "Workflow Layer"
        WF[MayaAgentWorkflow<br/>Graphical Workflow]
        N1[Intent Classification Node<br/>FilterChain]
        N2[Knowledge Retrieval Node<br/>KMSourceManager]
        N3[Tool Selection Node<br/>Smart Tool Selection]
        N4[Tool Execution Node<br/>PDF/OCR/Calculation/Search]
        N5[AI Response Generation Node<br/>LLM Call]
        N6[Result Saving Node<br/>Data Persistence]
        N7[Error Handling Node<br/>Exception Handling]
    end

    subgraph "Capability Support Layer"
        LLM[LLM Capability<br/>OpenAI/Gemini/Qwen]
        TOOLS[Tool Capability<br/>PDF/OCR/Calculation/Search]
        MEMORY[Memory Capability<br/>Redis/Vector Memory]
        RAG[RAG Capability<br/>pgvector/Hybrid Retrieval]
    end

    subgraph "Data Layer"
        D1[(PostgreSQL<br/>Conversations/Articles)]
        D2[(Redis<br/>Cache/Memory/Celery)]
        D3[(RabbitMQ<br/>Celery Broker)]
    end

    subgraph "External Systems"
        E1[Paprika API<br/>Knowledge Base Content]
        E2[OpenAI API<br/>GPT-4o/GPT-4.1]
        E3[Google Gemini API<br/>Gemini Pro/Flash]
        E4[Qwen API<br/>Qwen Turbo/Plus]
    end

    %% API to Processing Layer
    A1 --> P1
    A2 --> P2

    %% Processing Layer to Agent Service Layer
    P1 --> AS

    %% Agent Service Layer to Workflow Layer
    AS --> WF

    %% Workflow Node Connections
    WF --> N1
    WF --> N2
    WF --> N3
    WF --> N4
    WF --> N5
    WF --> N6
    WF --> N7

    %% Workflow Nodes to Capability Layer
    N1 --> LLM
    N2 --> RAG
    N3 --> TOOLS
    N4 --> TOOLS
    N5 --> LLM
    N6 --> MEMORY

    %% Capability Layer to Data Layer
    LLM --> D1
    TOOLS --> D1
    MEMORY --> D2
    RAG --> D1

    %% Celery Tasks to Data Layer
    P1 --> D3
    P2 --> D2

    %% External System Connections
    LLM --> E2
    LLM --> E3
    LLM --> E4
    RAG --> E1

    %% Style Definitions
    classDef api fill:#e8f5e8,stroke:#4caf50,stroke-width:3px,color:#000000
    classDef process fill:#fff8e1,stroke:#ffa000,stroke-width:3px,color:#000000
    classDef agent fill:#e3f2fd,stroke:#2196f3,stroke-width:3px,color:#000000
    classDef workflow fill:#fff3e0,stroke:#ff9800,stroke-width:3px,color:#000000
    classDef capability fill:#fce4ec,stroke:#e91e63,stroke-width:3px,color:#000000
    classDef data fill:#f1f8e9,stroke:#43a047,stroke-width:3px,color:#000000
    classDef external fill:#f3e5f5,stroke:#9c27b0,stroke-width:3px,color:#000000

    class A1,A2,A3,A4,A5,A6,A7 api
    class P1,P2 process
    class AS agent
    class WF,N1,N2,N3,N4,N5,N6,N7 workflow
    class LLM,TOOLS,MEMORY,RAG capability
    class D1,D2,D3 data
    class E1,E2,E3,E4 external
                                      
                                        sequenceDiagram
    participant U as User
    participant F as Frontend
    participant A as API
    participant C as Celery Worker
    participant DB as Database

    U->>F: Send Question
    F->>A: POST /maya-v2/ask-with-model/
    A->>DB: Create Task Record
    A->>C: Send Processing Task
    A-->>F: Return task_id
    F-->>U: Show Processing

    loop Poll Status
        F->>A: GET /maya-v2/task-status/{task_id}
        A->>C: Query Task Status
        C-->>A: Return Status

        alt Task Complete
            A-->>F: Return AI Response
            F-->>U: Display Result
        else Processing
            F-->>U: Show Processing
        end
    end
                                      
Tools
WSL2 NVIDIA Container Toolkit Colab Ollama Open WebUI
  • 在 Windows 透過 NVIDIA Container Toolkit 與 WSL2 部署本地 GPU 推論環境,並使用 Colab 進行 LLM 原型與快速實驗。調校提示詞行為並比較本地與遠端環境延遲基準

Freelancer

Self-Employed (Client Sources Confidential) 2023/3~2024/1
Backend Development
Python
FastAPI
  • 以 FastAPI 與 LangChain 架構知識管理問答系統;透過 Laravel API 注入資料,儲存於 PostgreSQL 並轉換為向量嵌入以進行語義檢索
PHP
PHP 12 Laravel
Tools
Others
WordPress
AI
Frameworks & APIs
LangChain OpenAI API ChatOpenAI LLMChain PromptTemplate LangChain RAG

Maya Sawa V1

                                              graph TD
    A["User Request</br>(/qa/query)"] --> B{FastAPI Router};
    B --> C["qa_chain.get_answer(query)"];
    C --> D{"Detect names in query"};
    
    %% Name Detection Branch
    D -- "Names found" --> E["Fetch character profiles</br>from DB"];
    E --> F{"Profile found?"};
    F -- "Yes" --> G["Create prompt with</br>character profile"];
    F -- "No" --> H["Respond 'not found'"];
    
    %% No Names Branch
    D -- "No names found" --> I{"Semantic search for people"};
    I -- "People found" --> J["Generate answer from</br>search results"];
    I -- "No one found" --> K["Similarity search</br>in Vector Store"];
    K --> L["Create prompt with</br>document context"];
    
    %% Unified Processing
    G --> M["Invoke LLM"];
    J --> M;
    L --> M;
    H --> N["Return final answer"];
    M --> N;
    N --> O["Save chat history"];
    O --> P["Return AI answer"];
    P --> B;
                                            
                                              flowchart TD
    subgraph "API Layer"
        APIRouter["FastAPI Router<br/>(maya_sawa/api/qa.py)"]
    end

    subgraph "Q&A Layer"
        QAChain["QAChain"]
        PageAnalyzer["PageAnalyzer"]
    end

    subgraph "Support Layer"
        NameDetector["NameDetector"]
        ProfileManager["ProfileManager"]
        PeopleWeaponManager["PeopleWeaponManager"]
        PersonalityPromptBuilder["PersonalityPromptBuilder"]
        NameAdapter["NameAdapter"]
        VectorStore["PostgresVectorStore"]
        ChatHistoryManager["ChatHistoryManager"]
        ConfigManager["ConfigManager"]
        ConnectionPoolManager["ConnectionPoolManager"]
        Scheduler["ArticleSyncScheduler"]
    end

    subgraph "External Services"
        OpenAIAPI["OpenAI API<br/>Chat & Embeddings"]
        PeopleAPI["People System API<br/>/tymb/people/*"]
        ArticleAPI["Public Article API<br/>/paprika/articles"]
        PostgresDB["PostgreSQL"]
        RedisDB["Redis"]
    end

    Client["Client / Frontend"] --> APIRouter
    APIRouter --> QAChain
    APIRouter --> PageAnalyzer
    APIRouter --> VectorStore
    APIRouter --> ChatHistoryManager
    APIRouter --> Scheduler

    ChatHistoryManager --> RedisDB

    QAChain --> NameDetector
    QAChain --> ProfileManager
    QAChain --> PeopleWeaponManager
    QAChain --> PersonalityPromptBuilder
    QAChain --> NameAdapter
    QAChain --> VectorStore

    PageAnalyzer --> QAChain

    NameDetector --> OpenAIAPI
    QAChain --> OpenAIAPI

    ProfileManager --> PeopleAPI
    PeopleWeaponManager --> PeopleAPI

    VectorStore --> PostgresDB
    VectorStore --> ArticleAPI

    PeopleWeaponManager --> PostgresDB

    ConfigManager --> PostgresDB
    ConnectionPoolManager --> PostgresDB
    Scheduler --> ArticleAPI
                                            

人格特質

具備強烈的結果導向思維,習慣從「是否可行、是否有效率、是否能落地」的角度切入問題,重視實際產出與執行成效。在面對需求或技術挑戰時,優先考量解決方案的可實作性與執行效率,能快速做出判斷並推進落地,而非僅停留於理論層面。

個性偏理性分析,處理問題時以邏輯與結構化思考為核心。即使在壓力或複雜情境下,仍會回歸「問題本質為何」、「規則與邏輯是什麼」來進行判斷,具備穩定且一致的決策模式,能有效降低情緒干擾,提升問題解決品質。

同時具備良好的系統性思維,擅長將複雜問題拆解為可管理的模組,並從系統架構、流程與元件關係進行分析。習慣透過不同方案比較(A/B)來評估優劣,並主動找出系統瓶頸(如效能、併發、資源使用)進行優化,使整體系統在穩定性與效率上持續提升。

整體而言,屬於以邏輯與數據驅動的工程型人格,兼具執行力與優化能力,能在變動需求中快速定位問題並提出可落地的解決方案,同時持續進行系統性改善。

TY的智慧庫

你有事?
問前想清楚,機會不是誰都有。

💡 建議主題:

放大圖片