# Sync Focus
----
覺得自己浪費太多時間?
----
想知道自己廢了多久qq
----
有瀏覽器插件可以用嗎
----

有 但好像不能同步 🥲
----
想要🥺
- 支援用同帳號來同步設定 & 使用紀錄
- 使用行為分析 (有 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
```
---
## 使用者行為紀錄
----
怎麼確認一個人完全死掉了
----
聽他心跳
----
不對
----
黃金急救時間

----
心跳正常/停止 示意圖

所有的心跳停止均小於黃金急救時間 -> **活著**
----
完全死亡 --> 完全停止做某件事了
----
做一件事的時候
會有兩種情況
----
1. 在弄東西的時候...
- 點擊
- 打字
- 同個 tab 被導到其他ㄉ url
- 切換 tab
----
2. 導致你沒在操作瀏覽器的原因
- 參考文件(pdf, word, excel, ...)
- 聯絡軟體
- ~~盯著螢幕想我現在在幹嘛~~
----
**黃金急救時間**
----
後端加上定義好的**黃金急救時間**
```
heartbeat_diff_threshold = timedelta(minutes=2)
```
就可以計算做一件事的區間ㄌ
---
## 使用者統計分析 (Summary)
----
- 某個 domain (YT, IG, FB) 使用分析
- 網站分類  
- ...
----
這... 聽起來負擔有點重
----
假設每個使用者平均每 3 秒有一個動作, 經過 1 小時
3600 / 3 = 1200
每個使用者一小時會有 1200 條紀錄 !!!
那 100 個人的話 不就會有 120000 條...
----
太累ㄌ 要給其他人慢慢做

----
但是
這樣的架構有什麼問題
----
如果每個 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?????
----

----
- 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)

---
### 未來展望
----
#### 使用行為分析 (GenAI)
----
Record and Chat History as RAG

----
ChatBot with RAG-based response

----
#### 監控

----
但人呢?
----
如果把辦公室比喻成工廠的話
----
那員工就是機器
----
舉 RD 來說
----
那編輯器呢
----
**Open Source VSCode Extension**

----
**Online Coding Editor**

----
這樣其實蠻過分的XD
----
browser is all you need
---
## 什麼是紀錄
----
Notion 生活管理 ??

----
效率不升反降 ?!

----
Automation
----


----
- 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}]"}