---
tags: cofacts,
---
# 20260324 會議記錄
:::info
- [所有會議記錄](https://g0v.hackmd.io/@cofacts/meetings/x232chPbTfGgNL_Q0f47rQ)
- NPO Hub 出席:bil, lahna, mrorz, nonumpa
- 線上出席:
- https://meet.google.com/mrz-dgrd-pri
:::
### Cofacts.ai 開發
https://github.com/orgs/cofacts/projects/12
- [ ] React-markdown --> 回應編輯器
- [ ] 資料關聯整理:準備 source list 然後掃 messages
- [ ] Session list
- [ ] Deploy to production w/ Claudelare
- [ ] 整理 header (logo、menu、搜尋⋯⋯ etc)
- [ ] landing page focus issue
- [ ] input 在組字時 enter 會直接送出
- [ ] tool call 細節調整
- [ ] Langfuse feedback buttons
- [ ] ADK 升級到可以看到 openapi.json
- [ ] 直接用 ADK type 來 render events 而非轉成 messages
- [ ] 在 tool call 中間關掉瀏覽器視窗再打開同一個 session page,要可以繼續串流結果
### 主機遷移至 GCE
- [x] @mrorz 執行 https://docs.google.com/document/d/1sZ4jOsrZPvbJv4QjlMxgbqFsh_pTZNBRs-NbG-HU0rM/edit?pli=1&tab=t.31x22849fdr2#heading=h.qmggrn3hmjbo
- [x] @mrorz 確認 docker-compose 與 rumors-deploy script 是否可以共用
- [ ] @mrorz 可以的話,開一台 production 設定好 ES6 snapshot,準備 migrate
- 準備好後先停機,省 cost
---
> COS 下是可以在 home 底下做出大家都可讀寫的 rumors-deploy
> 但 home 底下的 script 不能執行
> 我連 docker-compose 都沒辦法好好跑,心好累
> 想回到 ubuntu XDDDD
> [name=mrorz]
新 Design document:https://docs.google.com/document/d/1sZ4jOsrZPvbJv4QjlMxgbqFsh_pTZNBRs-NbG-HU0rM/edit?pli=1&tab=t.t599bt7kwc4o#heading=h.351xoil28n2
```mermaid
flowchart TB
subgraph Internet ["網際網路 (Internet)"]
User(("👥 一般使用者<br>(瀏覽器/Cofacts.ai)"))
LINE_Server(("📱 LINE 平台<br>(Webhooks)"))
Admin(("🧑💻 系統管理員<br>(DevOps/RD)"))
end
subgraph CF ["Cloudflare 邊緣網路"]
CF_Edge["☁️ Cloudflare<br>(WAF / DNS / DDoS 防禦)"]
end
subgraph GCP ["Google Cloud Platform (GCP)"]
IAP["🛡️ Identity-Aware Proxy<br>(IAP)"]
Ops_Dashboard["📊 Cloud Monitoring / Logging"]
subgraph VPC ["VPC 網路 (Deny All Ingress / 暫時性外部 IP)"]
subgraph GCE ["🖥️ GCE: e2-highmem-4 (Ubuntu 24.04 LTS)"]
subgraph OS ["Linux OS 層"]
PAM["🔑 pam_group.so<br>(登入自動指派 docker 群組)"]
Ops_Agent["📈 Google Cloud Ops Agent<br>(收集 Metrics & Logs)"]
end
subgraph Docker ["🐳 Docker Compose V2 環境"]
Cloudflared["🚇 cloudflared<br>(Zero Trust Tunnel)"]
Site["🌐 Web (site-tw)<br>(SSR 前端站台)"]
API["⚙️ rumors-api<br>(核心 API Server)"]
Bot["🤖 line-bot-zh<br>(LINE 機器人)"]
ES["🗄️ Elasticsearch 9<br>(TF-IDF + Gemini 向量檢索)"]
Resolver["🔗 url-resolver<br>(記憶體限制 512m)"]
Cron["⏱️ cron-runner<br>(排程腳本執行)"]
end
Disk[("💾 Persistent Disk<br>(pd-balanced)<br>- /var/lib/docker<br>- /srv/rumors-deploy")]
end
end
end
%% End User Flow
User -- "HTTPS (cofacts.tw 等)" --> CF_Edge
LINE_Server -- "HTTPS (api.cofacts.tw)" --> CF_Edge
%% Zero Trust Tunnel Flow (Outbound from GCE)
Cloudflared -. "1. 主動建立出站連線<br>(Outbound)" .-> CF_Edge
CF_Edge == "2. 安全路由流量至內網" ==> Cloudflared
%% Internal Proxy Routing
Cloudflared -- "HTTP 轉發" --> Site
Cloudflared -- "HTTP 轉發" --> API
Cloudflared -- "HTTP 轉發" --> Bot
%% Internal Microservices
Site -- "GraphQL 請求" --> API
Bot -- "GraphQL 請求" --> API
Cron -- "定期觸發任務" --> API
Cron -. "自動更新 Image 並重啟" .-> Docker
API -- "CRUD & HNSW 近似最近鄰比對" --> ES
API -- "爬取與解析外部網頁" --> Resolver
%% Admin Flow
Admin -- "gcloud compute ssh" --> IAP
IAP -- "經由安全通道 (Port 22)" --> PAM
PAM -- "取得免 sudo 操作權限" --> Docker
PAM -. "讀寫共用部署設定檔 (setgid)" .-> Disk
Docker -. "掛載 Volume / 資料持久化" .-> Disk
%% Monitoring Flow
Docker -. "容器日誌與主機效能" .-> Ops_Agent
Ops_Agent -- "即時監控數據" --> Ops_Dashboard
%% Styling
classDef external fill:#f9f9f9,stroke:#333,stroke-width:2px;
classDef gcp fill:#e3f2fd,stroke:#1976d2,stroke-width:2px;
classDef gce fill:#ffffff,stroke:#388e3c,stroke-width:2px;
classDef container fill:#fff3e0,stroke:#f57c00,stroke-width:1px;
class Internet,CF external;
class GCP gcp;
class GCE,VPC gce;
class Cloudflared,Site,API,Bot,ES,Resolver,Cron container;
```
:::info
TODO: 記得設定 swap
:::
新 Devops manual https://github.com/cofacts/devops/pull/1/changes
### 小聚籌備
- [x] 投放目標:雙北
- [x] Rich menu
- [ ] VOOM 發文
- [ ] FB 發文
- [ ] 食物:沒有
- [ ] 記得帶:貼紙、不太環保杯 (bil)