系統會寄一組 6 位數驗證碼到 您帳號設定的信箱。 驗證通過後 30 分鐘內不需再驗。
驗證碼已寄到 您的信箱,請打開信箱抄下 6 位數字。
這個畫面會一直等您回來——切到別的視窗不會消失。
給維運人員看的。不需要獸醫背景,照著做就能完成日常更新與發布。 需要專業判斷的地方會標明該找誰。
把它想成一本字典的出版社。
| 我們(中央知識庫) | 維護字典的內容:有哪些病、哪些症狀、哪些藥,各自叫什麼名字 |
|---|---|
| 診所的 ERP | 訂閱這本字典。醫師打字搜尋時,查的是自己院內那份副本 |
| 我們發布「版本」 | 像出版社出第二版、第三版。診所看到有新版,才來下載更新 |
| 頁面 | 做什麼 | 誰做 |
|---|---|---|
| 總覽 | 看現在卡在哪,數字都可以點進去 | 你 |
| ① 匯入 | 上傳工作簿、看差異、逐筆確認、套用 | 你 |
| ② 內容審核 | 把匯進來的內容上架 | 🔴 獸醫師——臨床內容對不對,不是維運判斷得了的 |
| ② 來源與授權 | 判定每個來源能不能再散布 | 🔴 法務——授權條款要有人真的讀過 |
| ③ 版本與發布 | 建版本、收錄、過閘門、發布 | 你 |
| ③ 金鑰與授權 | 發金鑰給診所、指定能拉哪些 Dataset、填 IP 白名單 | 你 |
| 稽核軌跡 | 誰在什麼時候改了什麼。只增不改不刪 | 你 |
① 內容(內容審核頁)
| 畫面上的字 | 白話是什麼 | 為什麼重要 |
|---|---|---|
| 實體 | 字典裡的一個條目。六種:疾病、症狀、檢查、處置、藥品成分、藥品 | 診所的病歷存的就是它的代碼 |
| 代碼 | 條目的永久編號,像 DIS000001 | 🔴 一旦配發就永遠不能改、不能給別的條目用。 改了會讓舊病歷指到不相干的東西 |
| 別名 | 同一個條目的各種叫法:同義詞、飼主用語、常見錯字 | 醫師打「一直抓」要找得到「搔癢」,靠的就是這些 |
| 被誰取代 | 這個條目停用了,改用哪一個 | 停用必須說得出被誰取代。⚠ 但絕不可用它批次改寫舊病歷 |
| 逐列出處 | 這一列的內容是哪個來源說的 | 發布閘門靠它算出「本版引用了哪些來源」。沒出處的內容閘門看不到,等於漏檢 |
② 來源(來源與授權頁)
| 畫面上的字 | 白話是什麼 | 為什麼重要 |
|---|---|---|
| 來源 | 資料是哪來的:某份指引、某個開放資料集、某張藥證 | 證明內容有所依,不是憑空想出來的 |
| 散布判定 | 這個來源的內容能不能再發給診所 | 🔴 這是程式會讀的欄位,不是說明文字。見第四節 |
| 暫定授權 | 為了讓流程走得通先給的臨時判定,還沒有人真的查過條款 | ⚠ 標記在就會一直顯示「N 個來源是暫定授權」,不會自己消失。 正式查證後重新判定一次,數字才會變小 |
| 外部術語標準 | LOINC、ATCvet 這類外部編碼系統 | 代碼欄是空的就不算散布,不會擋住發布。這張表存在是為了保留待查清單 |
③ 發布(版本與發布頁、金鑰頁)
| 畫面上的字 | 白話是什麼 | 為什麼重要 |
|---|---|---|
| Dataset(資料集) | 一整包要發給診所的條目清單,例如「犬貓核心知識庫」 | 不同診所可以訂不同包 |
| 版本 | 資料集的第幾版,像 1.2.0 | 診所靠版本號判斷要不要更新 |
| 收錄 | 把「已上架」的內容挑進這一版 | 沒被收錄的條目,診所拿不到 |
| 快照 | 發布時把本版內容凍結存一份 | 對外 API 只讀快照,不讀現況表。所以現況表之後怎麼改,都不會動到已發布的版本 |
| 發布說明 | 你自己寫的一句話,例如「新增肛門腺問題」 | 給人看的。變動細目由系統自己算,不用你寫 |
| IP 白名單 | 這把金鑰可以從哪些網路位置連進來 | 🔴 空白 = 拒絕全部,不是允許全部。發金鑰時就要一起填 |
④ 匯入(匯入頁)
| 畫面上的字 | 白話是什麼 | 為什麼重要 |
|---|---|---|
| 暫存 | 上傳後原始列先進暫存區,不動任何正式資料 | 要按過「套用」才會寫進去。上傳錯了直接取消批次就好 |
| 差異報告 | 這一批跟現有資料比,哪些是新的、哪些變了、哪些沒變 | 套用前唯一的檢查機會 |
| 疑似重複 / 衝突 | 系統判不出來是不是同一筆 | 🔴 必須逐筆選,不接受批次。見第五節 |
| 匯入批次 | 一次匯入的紀錄:什麼時候、從哪個檔、幾筆 | 日後發現資料有問題,靠它查是哪一次帶進來的 |
| 指紋 | 檔案內容的雜湊值 | 同一個檔重複上傳認得出來,不會匯進兩份 |
① 內容的狀態(內容審核頁)
② 版本的狀態(版本與發布頁)
③ 來源的散布判定(來源與授權頁)
| 判定 | 發布時 | 什麼情況用 |
|---|---|---|
| 可散布 | 通過 | 自有內容、公眾領域、明確授權可再散布的開放資料 |
| 有條件 | 通過 | 可以用,但有義務——要標出處、不得複製原文、僅限研究整合等。 條件寫在備註欄,那是給人看的,發布時不會自動幫你遵守 |
| 禁止 | 🔴 擋下 | 條款明文禁止再散布 |
| 尚未判定 | 🔴 擋下 | 還沒有人讀過它的條款 |
④ 匯入批次的狀態(匯入頁)
| 判定 | 意思 | 你要做什麼 |
|---|---|---|
| 新增 | 庫裡沒有,會配一個新代碼 | 不用管 |
| 更新 | 對到既有條目,內容有變 | 不用管 |
| 無變化 | 對到既有條目,內容一模一樣 | 不用管 |
| 疑似重複 | 很像某個既有條目,但不確定是不是同一筆 | 🔴 逐筆選:是同一筆(更新它)/不是(當新的) |
| 衝突 | 同一個來源 id 對到兩筆以上既有條目 | 🔴 逐筆選,要指定對到哪一筆 |
系統怎麼判斷「是同一筆」
① 來源 id 對得上(台帳查得到這個 id 以前配過哪個代碼) → 確定是同一筆 ② 藥品:許可證字號對得上 → 確定是同一筆 ③ 名稱正規化後對得上 → 疑似重複,要人確認
上傳 xlsx
├ 結構檢查 不過就整份拒絕,不做半套匯入
├ 原始列進暫存 不動任何正式表
├ 逐筆重複判定 新增/更新/無變化/疑似重複/衝突
├ 人工確認 🔴 疑似重複與衝突必須逐筆選
└ 套用 單一交易,失敗全數復原
↓
內容審核上架 草稿 → 已上架 ⚠ 這還不會發給診所
↓
建版本、收錄 只收「已上架」的
↓
發布閘門 來源授權 + 劑量簽核 + 非空版本
↓
發布 產快照,對外 API 只讀它
↓
授權診所金鑰 指定 Dataset + 填 IP 白名單
⚠ 只有一條路能送到診所
診所拿得到某個條目 ⇔ ① 條目狀態 = 已上架
而且
② 它被收進某個已發布的版本
所以:
✅ 版本是唯一的交付管道
✅ 不存在「單獨核准一個條目就發出去」這條路
⚠ 但「已上架」的條目可能一直沒被收進任何版本——那是漏發不是漏洞
① 匯入一批新資料
| ① | 匯入頁 → 選 .xlsx → 上傳並檢查 |
|---|---|
| ② | 看差異報告。疑似重複與衝突逐筆選完 |
| ③ | 按套用。失敗會整批復原,不會留半套 |
| ④ | 套用後內容是草稿,要獸醫師去「內容審核」上架 |
② 判定一個新來源的授權(法務)
| ① | 來源與授權頁找到那一列,看它的網址與備註 |
|---|---|
| ② | 讀原始條款,選四個判定之一 |
| ③ | 有條件的話,把條件寫進備註——發布時系統不會自動幫你遵守 |
| ④ | 如果那筆原本是暫定授權,重新判定後暫定標記才會解除 |
③ 發一個新版本給診所
| ① | 版本與發布頁 → 選 Dataset → 建新版本,填版本號與說明 |
|---|---|
| ② | 按收錄已上架的內容 |
| ③ | 按重跑發布前檢查。有紅的就去解,解完再跑一次 |
| ④ | 按發布給診所。此刻產生快照,之後改現況表都不影響這一版 |
| ⑤ | 🔴 到金鑰與授權確認每家診所都被授權了這個 Dataset |
④ 發一把金鑰給新診所
| ① | 金鑰與授權頁 → 新增。金鑰只會顯示一次,當場複製給對方 |
|---|---|
| ② | 勾選他能拉哪些 Dataset |
| ③ | 🔴 填IP 白名單。留空的話他連不進來,而且看不出原因 |
| ④ | 請對方實際拉一次,回來看「最後使用時間」有沒有更新 |
| 不要做 | 會發生什麼 |
|---|---|
| 🔴 改掉已經配發的代碼,或把代碼拿去給別的條目用 | 診所的病歷存的就是代碼。改了之後,那些病歷指向的是別的疾病—— 而且不會有任何錯誤訊息 |
| 🔴 想辦法修改已發布版本的內容 | 等於改寫過去那些病歷當時的依據。要改就發新版,這件事沒有例外 |
| 🔴 用取代關係去批次改寫舊病歷 | 「A 已被 B 取代」說的是從今以後用 B。當年開的是 A,病歷就該寫 A |
| 症狀 | 先查什麼 |
|---|---|
| 診所說拉不到資料 | ① 金鑰還在、還是 active 嗎 ② 他們的對外 IP 換了嗎 ③ 這把金鑰有被授權那個 Dataset 嗎 |
| 診所拉得到,但清單是空的 | 版本裡有沒有收錄內容(收錄步驟漏了);或金鑰授權的是另一個 Dataset |
| 發布按不下去 | 看檢查結果的紅字。三種:來源授權沒過、劑量沒簽核、版本是空的 |
| 上傳被整份拒絕 | 訊息會說是哪個分頁、缺哪個欄位。檔案要修好再上傳, 系統刻意不提供「跳過壞的幾列」 |
| 匯入後數字跟預期差很多 | 稽核軌跡找那個批次,看差異報告的統計。批次紀錄不會被刪 |
| 自己進不了後台 | 公司對外 IP 換了?帳號的信箱填了嗎?被鎖了嗎 |
| 收不到驗證碼 | 先看垃圾信匣。⚠ 沒填信箱又在公司網路外,是進不來的—— 信箱要在公司網路內時就先補好 |
| 檔案 | 內容 |
|---|---|
| CLAUDE.md | 首要執行準則,含三條不可違反的規則 |
| docs/redesign-v3.md | 架構藍圖:schema、匯入、重複判定、發布 |
| docs/db_schema.sql | 資料庫結構唯一真相來源 |
| docs/api/knowledge-v2.yaml | 對外 API 契約唯一真相 |
| docs/erp-integration-v2.md | 診所端接線說明(順序與理由) |
| docs/go-live-checklist.md | 上線檢查清單,每一項都附怎麼驗 |
| docs/moa-source-guide.md | 農業部動物用藥開放資料判讀 |
| 類型 | 草稿 | 已上架 | 合計 |
|---|
| 別名/搜尋詞 | — |
|---|---|
| 出處紀錄 | — |
| 已發布版本數 | — |
| 啟用中的對外金鑰 | — |
| 其中沒填 IP 白名單 | — |
| 來源 | 名稱 | 散布規則 | 被引用 |
|---|
| 類型 | 前綴 | 已配到 |
|---|
| 時間 | 對象 | 動作 | 操作者 | 備註 |
|---|
上傳工作簿 → 看差異 → 逐筆確認 → 套用。 上傳不會動到任何正式資料,要按過「套用」才會寫進去。
| 判定 | 來源 id | 名稱 | 對到 | 說明 | 決定 |
|---|
把匯進來的內容上架。⚠ 上架不等於發給診所—— 還要挑進版本、通過發布閘門才會出去。
| 代碼 | 名稱 | 物種 | 別名 | 狀態 |
|---|
判定每個資料來源能不能再散布給診所。
| 標準 | 名稱 | 已填代碼 | 判定 |
|---|
| 來源 | 標題 | 被引用 | 判定 |
|---|
版本是唯一的交付管道。內容自己上架不會發給任何人—— 要「內容已上架」且「它在某個已發布版本裡」兩個條件同時成立。
每間診所一把金鑰,可個別停用。金鑰綁定「可存取哪些 Dataset」與「可以從哪些 IP 來」。
| 診所代號 | |
|---|---|
| 金鑰前綴 | |
| 聯絡窗口 | |
| 發布通知 | |
| 可存取 Dataset | |
| 允許的來源 IP | |
| 備註 | |
| 最後呼叫 |
🔴 一個都沒勾的話,這家診所連得上但拉到的是空清單,而且不會報錯。
🔴 留空 = 拒絕全部,不是允許全部。
上線前要填的東西在這裡。⚠ 改動會立刻生效。
xxx.主網域 也有。
用主網域底下的信箱最安全。只增不改不刪。每一次狀態變更都留得住「變更前長什麼樣」。
| 時間 | 對象 | 動作 | 操作者 | 變更 | 備註 |
|---|