0%

GDSC NCKU 2024 - Sync Focus


覺得自己浪費太多時間?

想知道自己廢了多久qq

有瀏覽器插件可以用嗎

image

有 但好像不能同步 🥲

想要🥺

  • 支援用同帳號來同步設定 & 使用紀錄
  • 使用行為分析 (有 dashborad 可以看)

怎麼用🥺

帳號資料同步

登入 & API Key

sequenceDiagram
    participant User as User(Chrome Extension)
    participant API as Backend API
    participant Google as Google Auth

    User->>API: Navigate to /login
    API->>User: Redirect to Google Login
    Note over User,Google: URL: https://api.example.com/login

    User->>Google: Login at Google
    Google->>User: Redirect to /login/callback with code
    Note over User,Google: URL: https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=https://api.example.com/login/callback

    User->>API: Access /login/callback?code=xxx
    API->>User: Set token in cookie (includes user_id)
    Note over User,API: URL: https://api.example.com/login/callback?code=xxx

    User->>API: Request /get-api-key with cookie
    API->>User: Validate cookie token and return user's api_key
    Note over User,API: URL: https://api.example.com/get-api-key

使用者行為紀錄

怎麼確認一個人完全死掉了

聽他心跳

不對

黃金急救時間
image

心跳正常/停止 示意圖

image

所有的心跳停止均小於黃金急救時間 -> 活著

完全死亡 --> 完全停止做某件事了

做一件事的時候

會有兩種情況

  1. 在弄東西的時候…
  • 點擊
  • 打字
  • 同個 tab 被導到其他ㄉ url
  • 切換 tab
  1. 導致你沒在操作瀏覽器的原因
  • 參考文件(pdf, word, excel, …)
  • 聯絡軟體
  • 盯著螢幕想我現在在幹嘛

黃金急救時間

後端加上定義好的黃金急救時間

1
heartbeat_diff_threshold = timedelta(minutes=2)

就可以計算做一件事的區間ㄌ

使用者統計分析 (Summary)

  • 某個 domain (YT, IG, FB) 使用分析
  • 網站分類 image image

這… 聽起來負擔有點重

假設每個使用者平均每 3 秒有一個動作, 經過 1 小時

3600 / 3 = 1200

每個使用者一小時會有 1200 條紀錄 !!!

那 100 個人的話 不就會有 120000 條…

太累ㄌ 要給其他人慢慢做

image

但是

這樣的架構有什麼問題

如果每個 worker (負責進行統計ㄉ程式) 收到的使用者行為紀錄在時間上很不連續

會很容易造成

  1. 統計時間段重疊
  2. 如果在存活時間內的 heartbeat 只有一個? 我該丟掉嗎? 還是?

怎解?

  1. 使用分散式鎖, 對同一時間段上的統計對象上鎖, 以保證在多個副本中的資料相依順序

蛤? 你在說什麼?

沒關係 我也不知道 所以我們沒這樣做

  1. 直接一次丟一大包在時間連續且為同個 user 的 heartbeat records 給那些 worker

直接在 client 端做掉

但是但是 好像還有一個東西可以講

其實在每個批次處理中

都是對一堆資料分群

那讓每一個批次做更多事 一次寫入更多統計數據

好像會更好

可是可是

larger batch size --> longer wait time
longer wait time --> longer latency

怎麼辦

Additive increase/multiplicative decrease???

image

  • Message Arrival Rate (msg_rate)
  • Batch Size (batch_size)
  • Ticker Timeout (ticker_timeout) or Wait Time

Tech Stack

後端

  • Python + FastAPI
  • postgreSQL
  • rabbitmq
  • rust (ETL)
  • redis?

Chrome Extension 開發流程

Wakatime Extension + Stay Focused Chrome Extension

圖片6

未來展望

使用行為分析 (GenAI)

Record and Chat History as RAG

image

ChatBot with RAG-based response

image

監控

image

但人呢?

如果把辦公室比喻成工廠的話

那員工就是機器

舉 RD 來說

那編輯器呢

Open Source VSCode Extension

image

Online Coding Editor

image

這樣其實蠻過分的XD

browser is all you need

什麼是紀錄

Notion 生活管理 ??

image

效率不升反降 ?!
image

Automation

image
image

  • Sync Focus
  • WakaTime

Still Deffective

  • 你也有可能話太多時間時不時在 review 自己的使用情況

習慣

Thanks.