# Sync Focus ---- 覺得自己浪費太多時間? ---- 想知道自己廢了多久qq ---- 有瀏覽器插件可以用嗎 ---- ![image](https://hackmd.io/_uploads/rJ1sFfDnp.png) 有 但好像不能同步 🥲 ---- 想要🥺 - 支援用同帳號來同步設定 & 使用紀錄 - 使用行為分析 (有 dashborad 可以看) ---- ## 怎麼用🥺 --- ## 帳號資料同步 ---- 登入 & API Key ```mermaid 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](https://hackmd.io/_uploads/Hyplum526.png) ---- 心跳正常/停止 示意圖 ![image](https://hackmd.io/_uploads/Bykzo7qha.png) 所有的心跳停止均小於黃金急救時間 -> **活著** ---- 完全死亡 --> 完全停止做某件事了 ---- 做一件事的時候 會有兩種情況 ---- 1. 在弄東西的時候... - 點擊 - 打字 - 同個 tab 被導到其他ㄉ url - 切換 tab ---- 2. 導致你沒在操作瀏覽器的原因 - 參考文件(pdf, word, excel, ...) - 聯絡軟體 - ~~盯著螢幕想我現在在幹嘛~~ ---- **黃金急救時間** ---- 後端加上定義好的**黃金急救時間** ``` heartbeat_diff_threshold = timedelta(minutes=2) ``` 就可以計算做一件事的區間ㄌ --- ## 使用者統計分析 (Summary) ---- - 某個 domain (YT, IG, FB) 使用分析 - 網站分類 ![image](https://hackmd.io/_uploads/HyuZ-Nq2p.png) ![image](https://hackmd.io/_uploads/SyoG-453T.png) - ... ---- 這... 聽起來負擔有點重 ---- 假設每個使用者平均每 3 秒有一個動作, 經過 1 小時 3600 / 3 = 1200 每個使用者一小時會有 1200 條紀錄 !!! 那 100 個人的話 不就會有 120000 條... ---- 太累ㄌ 要給其他人慢慢做 ![image](https://hackmd.io/_uploads/Sy9UiOhQR.png) ---- 但是 這樣的架構有什麼問題 ---- 如果每個 worker (負責進行統計ㄉ程式) 收到的使用者行為紀錄在時間上很不連續 會很容易造成 1. 統計時間段重疊 2. 如果在存活時間內的 heartbeat 只有一個? 我該丟掉嗎? 還是? ---- 怎解? ---- 1. 使用分散式鎖, 對同一時間段上的統計對象上鎖, 以保證在多個副本中的資料相依順序 ---- 蛤? 你在說什麼? ---- 沒關係 我也不知道 所以我們沒這樣做 ---- 2. 直接一次丟一大包在時間連續且為同個 user 的 heartbeat records 給那些 worker ---- 直接在 client 端做掉 ---- 但是但是 好像還有一個東西可以講 ---- 其實在每個批次處理中 都是對一堆資料分群 ---- 那讓每一個批次做更多事 一次寫入更多統計數據 好像會更好 ---- 可是可是 ---- larger batch size --> longer wait time longer wait time --> longer latency ---- 怎麼辦 ---- Additive increase/multiplicative decrease????? ---- ![image](https://hackmd.io/_uploads/B1lDMUlS0.png) ---- - 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](https://github.com/wakatime/browser-wakatime) + [Stay Focused Chrome Extension](https://github.com/MaherSaleem/stay-focused-chrome-extension) ![圖片6](https://hackmd.io/_uploads/BJfIzNlS0.svg) --- ### 未來展望 ---- #### 使用行為分析 (GenAI) ---- Record and Chat History as RAG ![image](https://hackmd.io/_uploads/r1IKhGwn6.png) ---- ChatBot with RAG-based response ![image](https://hackmd.io/_uploads/BJXjnGvn6.png) ---- #### 監控 ![image](https://hackmd.io/_uploads/BkuzaGPnT.png) ---- 但人呢? ---- 如果把辦公室比喻成工廠的話 ---- 那員工就是機器 ---- 舉 RD 來說 ---- 那編輯器呢 ---- **Open Source VSCode Extension** ![image](https://hackmd.io/_uploads/BkzJb7w26.png =500x) ---- **Online Coding Editor** ![image](https://hackmd.io/_uploads/HyM9ZmPn6.png) ---- 這樣其實蠻過分的XD ---- browser is all you need --- ## 什麼是紀錄 ---- Notion 生活管理 ?? ![image](https://hackmd.io/_uploads/H11mu8lSA.png =350x) ---- 效率不升反降 ?! ![image](https://hackmd.io/_uploads/SJ8XnLeBC.png =400x) ---- Automation ---- ![image](https://hackmd.io/_uploads/ry7Yh8xr0.png =500x) ![image](https://hackmd.io/_uploads/SkKa2UeSC.png =500x) ---- - Sync Focus - WakaTime ---- Still Deffective - 你也有可能話太多時間時不時在 review 自己的使用情況 ---- 習慣 --- Thanks.
{"title":"Sync Focus","contributors":"[{\"id\":\"60f87ada-c8bc-4f5d-9b91-2a0d3103440d\",\"add\":7539,\"del\":3449},{\"id\":\"309b3073-fe62-45a6-ad33-8b90d039ce6f\",\"add\":149,\"del\":57}]"}
    415 views