iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
Modern Web

透過 python 建立發票系統 - 自己的發票自己查 系列

好奇現行的雲端發票、發票怪獸 APP 都怎麼做的呢?
發票有哪些有趣的事情呢?
我想分享如何透過 python FastAPI 架設一套發票系統,並利用 Airflow 排程去查詢發票資訊。

鐵人鍊成 | 共 30 篇文章 | 5 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21:上傳發票到 FastAPI

由於三個發票類型情境,可以再拆分成兩組, (1) 傳統發票、紙本電子發票 (2) 載具 通常發票應該可以一次存入多張,所以這邊將傳統發票、紙本電子發票歸類一組;...

DAY 22

Day 22:如何用 docker 架設 Airflow - 1

架設 Airflow 步驟比較複雜,今天這篇先聚焦於 docker-compose 如何寫 決定 Airflow 的 Database 我的版本選定 2.2.4...

DAY 23

Day 23:如何用 docker 架設 Airflow -2

有了 docker-compose.yml 之後我們還有一些待辦事項,接著在 /airflow 建立 Dockerfile Dockerfile FROM ap...

DAY 24

Day 24:設計 MongoDB Dao

這邊特別設計 MongoDB Dao(Data Access Object)類似 ORM 框架,像是 Sqlalchemy用物件導向的方式與資料庫互動 然而,你...

DAY 25

Day 25:設計紙本電子發票查詢的 DAG

DAG 首先我們先去定義 DAG,僅需要定義撈取紙本發票資訊即可 由於採用非同步方式,所以使用 asynico with DAG( dag_id...

DAY 26

Day 26:設計查詢載具有效的 DAG

如果昨天設計 DAG 都了解,今天的課題基本上就是 copy paste 改一改 Exception 這邊先補充昨天沒有提到的 @handle_excepti...

DAY 27

Day 27:設計查詢載具發票 DAG - 1

查詢載具發票的 DAG 是比較複雜的邏輯,還記得在 Day 2:電子發票應用 API 規格 - 1有提到「抓載具發票是分成兩段式,也因此發票 APP 會先拿到所...

DAY 28

Day 28:設計查詢載具發票 DAG - 2

有了載具發票之後,可以透過發票號碼、消費日期、載具條碼、載具驗證碼來查詢發票購買細項 通常這邊發票會很多(因為一個月通常會有很多發票),例如我昨天在發票表頭 A...

DAY 29

Day 29:進行大量測試 發現重大問題!

我進行大量測試之後,發現這個查詢的速度相當地慢,有一次我將 airflow 設計每分鐘都跑(但實際上會等上一個排程跑完才會跑下一個,一個排程跑相當地久,retr...

DAY 30

Day 30:向 tw_invoice 作者提交 PR

我將 Airflow 遇到的情況說明給作者,大意大概是我在 Airflow 經常發現有 NewConnectionError 這個問題,而且回應時間大約是 2...