開放政府標案專案流量爆發的一年記錄與啟發

從 2014 年開發了開放政府標案到現在已經過了超過五年了,這個專案跟著我開始工作到現在,雖然不算達成當初開發專案最初的目的,但是期間挹注了許多讓我個人成長的養分,而在這兩年,這個網站的月流量也成長了八倍,全都來自自然流量,變成一個月有超過二十萬流量的專案,這個成長過程跟我在工作的體驗很一致,無法細數你每天日常做對了哪些事,但重點是要不停的思考跟前進

所以寫篇文章紀念這些年的開放標案演進與我的學習的記錄,跟 side project 亂選技術對工作的幫助,跟作為一個專案的 PM 的角色思考的方式如何轉變。

緣起

簡單介紹一下開放政府標案這個專案,我們公民繳的稅,會被政府依照需求跟政策分配到各個政府機關/部會,然後用招標的方式讓民間的公司或個人可以公平取得這些標案的機會去競標,所以會定期釋出招標的公告跟決標的公告在政府的電子採購網站。

而政府的標案網站,除非你真的需要賺這個錢,其實你很難會有動機去瀏覽這些資訊,主要是這個系統的設計不太友善,不太方便你隨意地瀏覽,而有看過「黑金」這部電影,大概可以理解其實看似公平的標案背後,可能會有政治目的相關的操作隱藏在背後,不見得是嚴重的問題,但是當這個資訊不透明,就不容易被討論跟認知

所以為了響應 g0v 的目標,我就找了這個題目來試試看,主要就是希望可以把這些資料挖出來整理,做出一個容易瀏覽的介面,讓沒有要競標的民眾也可以更容易了解政府機關跟民間公司之間有什麼長期的標案厲害關係,或許可以看出有什麼不尋常的問題。

專案演進

一開始花了很多時間在做爬蟲,把電子採購網公告的資料一天一天的爬出來,就花了幾個月的下班時間,其實對標案的資料結構理解也是零零散散的,也不確定爬蟲的完成度多高,但是也陸續的可以列出每天的標案,跟做一些基本的逐月的得標統計,也算是某種程度的達成我初步的目標,就可以很容易得看出哪些機關分配到的預算最多,有哪些高額的標案在招標,對政府預算的使用有一些基本的輪廓了解

另外一個原本想達成的功能是,可以看出哪些公司特別喜歡投標特定的機關,各單位得標廠商統計,但是做完以後才發現,事實其實沒有那麼單純,特定廠商得標的頻率很高,不見得代表什麼弊案或內幕,純粹就是該廠商在該產業的占比很高,自然就會每次都是特定廠商得標

所以到此為止,第一年亂摸索了一段時間以後,專案告一段落開發就停擺了,因為也不知道要幹嘛了,而且後來電子採購網加裝了一個防火牆,讓原本開發好的機器人停止運作造成資料就無法持續更新了,我也沒有進一步改造的想法

直到大概兩年前ㄅ,榮尼王大大也跳進來做這個政府標案的爬蟲跟 API,才讓我的專案有了一線生機,透過 ronny 的資料導入,才讓我的專案有了新的定位,決心專心做好資訊呈現跟統計的功能

就開始陸續把機關、公司瀏覽的統計跟列表做得更完整,讓不同需求的使用者,都可以快速的了解特定公司跟機關招標跟得標的情形,進一步可以引發當初想像的討論,例如在這兩年 PTT 上只要討論到特定公司跟政黨之間有什麼特殊關係,開放標案的公司得標頁面就會被引用來討論,例如 Re: [新聞] 綠背景新創公司獲政府上億標案,就在分析跟討論公關公司跟民進黨之間的關係,雖然這篇文章討論量不高,但是被引用的當下真是相當感動,因為這個功能就發揮當初想取代電子採購網做不到的某個面向,我也因此得以偶爾了解社會議題的脈動XD

技術演進

來記錄一下著荒唐的技術 stack 跟演進史ㄅ,印象這些選擇都是在我還不會或不熟該技術的時候就選擇的

v1 後端用 nodejs + LiveScript,資料庫用 mongodb,前端用 angularjs + bootstrap,所以寫的當下極度痛苦,突然要用非同步的語言寫爬蟲,用覺得莫名其妙的 mongodb aggregation 整理資料跟統計結果,好幾天都寫到睡著,跟連簡單的語法都要查文件的 LiveScript 開發(最後悔的決定),前端倒是還好,沒有很複雜的流程 Angularjs 還算能應付。

這階段最大ㄉ收穫,學會寫出長的噁心的 mongodb aggregation query

v2 為了嘗試用 SSR 提升 SEO,改用 nextjs + 前端 react,來翻新所有前後端的頁面,搭配用 Nivo 製作統計圖表,至此為止這個專案應用層需要啟動三個 service 才得以運作XD

對 nivo 繪製出的圖覺得滿意

而基礎設施,從 AWS 開 VM 到搬家到 GCP 台灣機房,到 CentOS6 停止維護,換成 Ubuntu,來來去去機器重裝了可能超過五次,也把這環境搬了又搬調了又調,希望能把所有服務(mongodb + mysql + web server + application + php-fpm)作為一個遊樂場用最低的成本跑在單台(1 core 3GB RAM)機器上。

而最近為了滿足使用者很長需要搜尋的情境,在有機器效能的考量下,不想使用 elasticsearch 來解決,就透過 clickhouse 搭配 jieba,做了一個簡易版的搜尋引擎,算是效能不錯,找到的結果也還堪用,覺得過程很有啟發@Q@

回到做 side project 比較私心的部分,其實這個專案就是我的技術遊樂場,全都是挑選我超不熟悉的技術,完全沒有考慮合不合適,無腦就亂選一通,但是卻有七八成都變成我工作上的養分,最後都順利應用到工作中,並且這個專案開發的學習過程,讓我將這些技術導入到工作變得非常順利,無心的讓業務推展變得非常順利,這是當初的目的,但是做下去的時候完全不相信真的有可能發生價值,結果竟然真的發生惹…

Growth hacking

實際上就是作為一個專案的 Owner,你就會開始思考怎麼達成你的目標,使用者是怎麼使用你的專案的,剛開始沒什麼流量的時候,你完全只能用直覺亂做亂猜,但是開始有流量提升以後,你就可以透過 GA、Google Search Console,開始觀察使用者的行為,神奇的事情就會開始發生

你以為你的產品設計的情境,跟實際的使用者其實完全不ㄧ樣,我開始發現這個網站主要的流量來源( TA),不是我想像的想了解政府預算使用狀況的民眾,而是真的有在參與標案的公司,或者是想了解特定公司背景的人,而這些人都會透過搜尋引擎進入網站。

所以我就開始順著這個思路,開始逐漸解決一些 SEO 的問題,把這條路打通,果不其然,當我發現 Google 做 Client Side Render(CSR) 的索引效率極低以後,我就開始嘗試尋找Server Side Render(SSR) 的解決方案,後來決定導入 nextjs 重寫了大部分的前端頁面,讓後端也能進行 SSR 以後,流量竟然就開始爆發性的成長,Google index 頁面的效率大幅提升,讓我完整的觀察到有做 SSR 所帶來的差異跟過程,所以就開始逐一把每個該做的頁面 meta 跟 link 都建好,整個 Google index 的狀況也漸入佳境,最後也就觀察跟著使用者行為數據,做一些基本技術的調整,就讓流量成長了超過八倍

後來這個觀念,也讓我在工作中用到,把公司網站的這些技術細節調整好,搭配不同的情境,讓公司 Organic 的流量也提升了數十倍之多。

總結

如果你作為一個工程師,真的很推薦你找個想嘗試解決問題動手解決,最好是設定一個情境是也可以滿足其他人的需求,當你的專案有使用者,你思考的方式就不只是一個工程師,而是一個主理人,至此你的思考方式就會開始質變,發現很多新的世界

不見得專案最後會成功,但是你亂搞的所有過程,都有很高的機率會變成你成長的養份,這些機會在工作中不見得會有人幫你創造,所以為什麼不嘗試自己來ㄋ

最後希望今年能幫開放政府這個專案找到更廣的使用情境跟滿足更多使用者的需求,期待他可以從一個跳出率很高的網站,變成一個留存率很高的網站👻,又或者我能找到下一個戰場去探索新的世界,ㄏㄏ,ㄅㄞㄅㄞ 2020

21 comments on “開放政府標案專案流量爆發的一年記錄與啟發

  1. 開放政府標案是很棒的站台,有很珍貴的資訊,尤其是歷年的資料都有。
    要繼續維護喔,謝謝~

  2. 請問~為何A公司的案件會有表格化的呈現,然後還會有A公司得標業主的分佈比例, 但B公司則是只有條列式的得標紀錄呢?

    因為在查詢幾家公司的得標紀錄,發現有這樣的不同,故好奇詢問您,希望獲得解答,謝謝您~

    1. 理論上都會有得標的比例分佈耶,你可以提供你覺得沒有的範例我看看嗎

  3. 非常感謝,其實對在衙門內的我們也覺得採購系統真的很難用,光是要查一個資料都要過關斬將,連自己人都找不到,更何況是民眾,分享標案時也更方便了,讓更多的廠商可以來投標,我想這也是意想不到的吧!

  4. hi hi ~ 最近在使用統計,發現“各月招標資料統計”上方圖表只到2020/12,連帶2021的圖表甚至餅圖就跑不出來了~想問這部分會再調整嗎?
    另外,記得之前好像有看到您有寫因為資料量很大,server前陣子有升級~未來資料量若在大,可能在維護費上也會吃不消~想問問需不需要什麼協助呢XP

    1. 此問題修正了喔,感謝你的回報,因為近期伺服器升級造成一些相容性問題,趁著連假處理了一下,

      目前透過 google 廣告勉強可以支撐此服務運作,感謝你的心意 😝

  5. 謝謝您開發那麼棒的查詢系統,我是使用者之一,可惜我不會寫程式,不然我會想要開發更多功能,像是結合地圖或公投標廠商負責人的資料,統計投標廠商和招標機關間的地緣關係和人脈關連,做成大數據資料以供研究。

    1. 可以請你描述更多關於你想要使用的情境跟想達成的目的嗎,如果聽起來有其價值,我有空能開發喔!

      目前無法聯想地緣關係可以作爲什麼用途,目前是有每間公司的基本登記資料,只是公司登記也只有負責人的名字,沒有辦法辨識其唯一性,有點難以想像你描述的連結人脈與地緣的關係

  6. 相當實用的網站,查詢廠商跟標案都非常方便,謝謝您的付出與維護保養。

  7. 這邊整理資訊,對某些族群來說,有很高的實用性。我之前是手動的方式,去爬相關資訊,所以可以完全體會這個網站的價值。謝謝您

  8. 感謝這個網站的出現,看標案變得容易許多:D
    只是搜索關鍵字的部分目前好想跑不動哩

  9. 感恩大大
    去年的招標網站運作緩慢,但沒想到近期便順了
    是不是機器有更新了XD?

    有個bug想請大大幫忙看一下
    是在”統計”的”得標廠商排行”,2022及2023年點下去後,底下的排行沒有變化呢,而前面年份也有同樣狀況,如2018、2020,再麻煩您幫忙~~

    1. 最近有點時間就有把效能跟穩定度調教了一下,感謝你的回報這個問題我修正了喔

  10. 大大,能不能做出各間投標廠商的決標金額年度統計呢?

    這裡舉個實際例子:
    2023年華新儀錶參與了標案7,656,890,000金額的標案,
    實際華新儀錶的決標金額只有648,900,000元。開放標案統計是顯示華新儀錶得標案件為7,656,890,000,想跪求決標金額的統計(648,900,000),感恩大大

    1. 你說的對,現在的統計邏輯有誤,應該只採納該廠商決標金額,已經修正😻

      1. 疑 貓大的統計邏輯方式是不是改回去了
        不過我還是來回報一下其他問題 哈

        舉例:大陸工程股份有限公司
        請至下述連結
        https://pcc.mlwmlw.org/merchants/33020007
        1.長條圖顯示有問題,2024的得標未顯示
        2.長條圖顯示有問題,比較早期的如2017年得標顯示為負的,不知是否為決標公告連結消失的關係!?
        3..2024/2/6標案金額為367,970,不過實際決標為196,479唷

        請至下述連結
        https://pcc.mlwmlw.org/rank/merchant
        4.統計的得標總金額有誤
        5.得標數顯示為6,但實際為5

        小弟我近期沒案子,就會一直來光顧您的標案網站
        以上,再麻煩您了XD

        1. Hello Hong,

          你真是本站最佳 QA ,感謝你的貢獻~

          1. 我看 2024 得標是有數字的呢,只是金額還太少所以看起來很低,我計畫會再改善圖表 UI 讓顯示可以更清晰
          2. 早年的資料因為資料來源不穩定,所以有些錯誤,但時間久遠較難回朔了,但是近期政府標案網站改版後這些問題比較少了
          3. 這邊也有些顯示細節差異,標案開標的金額跟決標後不同廠商分配到的實際金額有差,目前是改成圖表採用該廠商決標金額統計了喔,只是表格中還是用開標金額顯示
          4. 如上
          5. 因為有些標案流標又重複開標在分年計算上就會被再統計到一次,但是我列表目前會合併這種標案,取最早開標的標案避免重複計算,一開始是在用開標日統計,現在偏向用決標日統計的差異,應該是改統一都取最後決標日統計會更恰當

      2. sorry,來回報一下下午的留言,第1點應該是沒問題的,是我自己看錯金額😅

發佈回覆給「飛碼農」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *