2014年6月30日

台南311開發紀錄 (上)

前言

古蹟app大致完工的時候,大約還剩兩個禮拜多的時間,我們決定做點不一樣的東西,希望能夠把Open311的東西透過這一次的台南黑客松,介紹給台南市政府。不過黑客松只給3分鐘報告,看來我們報告失敗的很徹底,完全沒有得到預期的效果。黑客松都已經過了,中間的過程也懶得再提了,寫下這篇主要是要紀錄一下開發台南311的過程,跟一些還需要被解決的問題。

下面這段是報名2014台南黑客松時,寫下的專案簡介。

有感於目前台南市問題回報機制不夠簡便及透明,本團隊期望導入Open311國際標準並利用行動裝置的特性,讓市民可以快速通報問題並追蹤後續處理的進度。
結合網頁和後端追蹤系統,讓不管電腦或是手機,皆可以關心自己或其他人通報的問題。主要功能有

  • 利用手機定位及拍照,快速回報問題(如: 地面坑洞, 號誌燈故障)
  • 列出附近或是最近這段時間內有人回報的問題
  • 追蹤特定問題處理進度

預計通報問題類別 (暫定)

  • 道路問題
  • 路霸與騎樓佔用
  • 市容整潔
  • 號誌、路燈故障
  • 其他

簡單來說就是,我們希望做一個Android App,這個app可以透過Open311的標準,讓一般市民在路上看到問題可以在30秒內,快速的將問題回報給市政府,讓問題回報變成一種舉手之勞。

可能有人會問,為什麼不用現在市面上的open 311 app呢?基本上根據評分還有個人使用的測試經驗,真的是很不好用,所以我們才會想要試著自己寫一個311 app。

從Open 311開始

一開始的構想來自於一個新聞報導,台南市「1999」市民服務專線 不滿意度高達三分之一。我看到這新聞覺得很驚訝,因為我根本不知道台南有1999。於是我在想會不會也有線上回報機制,然後我在台南市政府的網頁找到了線上即時服務系統。如果你點進去看你會發現一件事,就是你要有單號才能查詢問題回報的狀況,然後你還找不到回報的頁面。不過,最後我發現了,你要先點網站導覽然後才能看到1. 線上即時服務系統,有沒有這麼隱密啊!接下來你會遇到34大項的分類,當然裡面還有很多小項,我一直不懂,這樣設計是要給誰用阿,難道我還要很明確的知道我回報的問題是屬於那一項才行嗎?很明顯這樣的設計是為了責任單位不是為了民眾。就像佔用道路人行道騎樓騎樓佔用就分屬不同兩個大類。

抱怨完回到正題。

Open311 GeoReport v2是一個關於讓地方政府可以收到問題回報的一個標準,一般適用於非緊急的問題。那Open 311跟原本的美國311或是台灣的1999相比有什麼好處?我覺得大概有以下的優勢,也是我覺得目前1999的一些缺點:

  • 1999資料不透明,容易造成重複回報的現象,浪費資源。
  • 沒有即時的狀態更新,造成市民以為市政府效率不好
    • 例如:已通知承包商,預計3日內修復之類的更新。
  • 1999是用電話的方式,回報資料不容易數據化,無法做更進一步的分析。
  • 1999必須透過電話描述出問題發生的地點,如果不熟悉附近區域,可能會有問題。
  • 目前線上web回報機制,沒有標記經緯度的功能,一樣有位置描述的問題。
  • 回報問題資料不公開,市民不了解市政府修復了多少問題,只給出數字人民無法信服。

其實Open311本身定義的非常的簡單(很陽春),只有6個API而已,所以實作上並不會很困難,但是最大的困難在於沒時間做後端問題追蹤管理系統,於是為了搶時間想說拿Redmine來用,反正只是 demo,透過api去新增issue。大致的架構如下:

Android -> Open311 API service(Clojure) –> Redmine

不過真正動手研究後發現,Redmine的API存在單向的問題,新增沒什麼問題,就是查詢的api跟open 311的參數接不太起來。搞了兩三天後確定行不通,於是當機立斷,直接找現成的solution。在Open311的wiki上其實有列了一些Open 311 Server端的資訊,經過一些Survey後,我最後決定使用跟Open311沒什麼關係的FixMyStreet作為後端。

當時選擇FixMyStreet的solution主要有以下的考量

  • OpenSource 不過是用Perl開發的
  • 安裝方便,文件完整,還一直有在持續maintain
  • 其實比Open311還早,而且運作的不錯
  • 已經在不同國家運行,Open311似乎只集中在北美
  • 號稱有相容Open311 (後來才發現不甚理想)


FixMyStreet in 台南

主要紀錄架設FixMyStreet Service中的過程跟一些心得。

FixMyStree簡介

FixMyStreet是英國的mySociety這家社會企業的一個OpenSource Project(AGPL), 是一個web-base的服務,讓一般人可以透過網站回報一些問題,如路面坑洞、路燈號誌故障、塗鴉…之類的地方問題。

FixMyStreet目前提供的功能非常的完整,只需要做點簡單的設定就可以開始基本的運作。不過因為主要是使用Perl開發,所以在後續修改及擴充上上是一個比較棘手的問題。由於目前我的AWS Free Tier已經到期了,所以http://FixMyStreet.tw是關閉中的,後續不確定是否會再繼續。

FixMyStreet已經被應用英國以外在其他的國家

FixMyStreet 提供的功能

FixMyStreet Web主要提供的功能如下:

  1. 查看目前各地方單位的回報
  2. 查看你的回報
  3. 在地圖上查看回報
  4. 透過地圖上標點,上傳照片及問題描述回報問題。
  5. 系統會根據回報類別及地圖範圍回報給對應的處理單位
  6. 回報者的mail確認
  7. 問題追蹤訂閱
  8. 區域更新的訂閱
  9. 不同方式跟受理單位的後端整合

FixMyStreet 安裝與修改

  1. 安裝

    關於FixMyStreet的安裝可以直接參考http://fixmystreet.org/install/ ,基本上應該就是Step by Step跟著做就對了。我選擇最簡單的方式就是用AWS EC2,直接掛上他們提供的AMI瞬間就完成了。

  2. 中文化

    FixMyStreet目前還沒有中文化,不過他的架構已經是使用gettext的方式,所以只需要修改po檔就可以了。我已經將大部分一般人可以看到的訊息給中文化完,不過因為有些詞不知道怎麼翻譯,例如他們的問題都是回報到Council,但是如果翻成議會感覺怪怪的,所以目前是暫時使用”受理單位”這個模糊的詞彙。目前所有的翻譯還是先放在我folk出來的repository.

    有興趣的人可以參考
    https://github.com/misgod/fixmystreet/tree/master/locale/zh_TW.UTF-8/LC_MESSAGES

  3. 修改conf/general.yml
    基本上直接參考檔案內的註解就可以了。

    參考台南311的設定

  4. 設定回報類別及受理單位的mail

    直接參考http://fixmystreet.org/customising/fms_and_mapit/

  5. 因為FixMyStreet會去檢查回報者的姓名字元必須大於5,所以這一個限制本身用在台灣是有問題的,所以我有寫信去給mysociety的人,他們說之後會修改。所以在目前這個時間就自己先拿掉檢查。

    修改perllib/FixMyStreet/DB/Result/Problem.pm
    修改web/js/fixmystreet.js

  6. Web及CSS的修改(這個我沒做)
    FixMyStreet有個機制叫Co-brand讓你可以針對ui或是程式碼做一些客製化。

    參考 http://fixmystreet.org/customising/



相關文章: 台南311開發紀錄 (下)

沒有留言:

張貼留言