project · diff
git:20260911.3f51f4a to git:20260911.3ae9bd7
32 added, 7 removed. Audit A to A.
---
name: project
- description: 專案管理(新前端 os.ching-tech.com/projects)
+ description: 專案管理(find_project/get_project/create_task 等 MCP 工具)
metadata:
ctos:
requires_app: project-management
---
【專案管理】
專案、里程碑與任務在 CTOS 自己的資料庫(`projects`/`project_members`/
- `milestones`/`tasks`),2026-09 起不再走 ERPNext。
+ `milestones`/`tasks`),2026-09 起不再走 ERPNext。工具在
+ `services/mcp/project_tools.py`,SQL 在 `services/project.py`。
- ■ 目前沒有專案的 MCP 工具
- 這個模組只有 REST API 與網頁,沒有可以呼叫的工具。使用者要查專案進度、
- 里程碑、任務或成員時,請引導他到新前端:
+ ■ 查詢
+ - `find_project(query, status?)`:名稱或客戶模糊搜尋,回候選清單。
+ `status` 只能是 planning/active/on_hold/completed/cancelled。
+ - `get_project(project_id | name)`:明細=主檔+進度+成員+里程碑(含 `is_overdue`)
+ +任務+綁定群組+知識條目數。
+ - `list_overdue_milestones()`:逾期里程碑清單(依到期日升冪,最多 20 筆)
+ 與進行中專案數。逾期=到期日已過、里程碑未完成,且專案還是 active。
+ - `list_tasks(project, status?, assignee?)`:任務清單,狀態只有 todo/doing/done。
- os.ching-tech.com/projects
+ ■ 寫入(只有專案成員或管理員能做)
+ - `create_task(project, title, assignee?, milestone?, due_date?)`
+ - `update_task(project, task, fields)`:`fields` 例 `{"status": "done"}`、
+ `{"assignee": "亞澤"}`、`{"due_date": "2026-10-01"}`;
+ 送 `{"assignee": null}` 是拿掉負責人、`{"milestone": null}` 是脫離里程碑。
+ 欄位名稱拼錯會回「沒有可更新的欄位」,不會假裝改好了。
+ - `create_milestone(project, name, due_date)`、`complete_milestone(project, milestone)`
+ - `add_project_member(project, user)`:`user` 吃 username 或顯示名稱。
- 單一專案的網址是 os.ching-tech.com/projects/<專案 id>,可以直接分享。
+ 被權限擋下來時工具回 `{"ok": false, "error": "只有專案成員能編輯"}`,
+ 照實告訴使用者,不要換個講法重試。
+
+ ■ 三條規矩
+ 1. **先 find 再寫**:改任務前先 `find_project`/`list_tasks` 確認是哪一個專案、
+ 哪一筆任務。
+ 2. **多個候選要問人**:專案、任務、里程碑、使用者都吃名稱,解析不唯一時工具回
+ `{"need_confirmation": true, "candidates": [...]}`(最多三個),把候選唸給使用者挑,
+ 不要自己選第一個;再帶 `"more": true` 表示候選被截掉了,
+ 請使用者把名字講具體一點;零命中回 `{"not_found": true}`。
+ 3. **建立專案不走工具**:開新專案、刪專案是管理員在網頁做的事,
+ 請使用者到 os.ching-tech.com/projects(單一專案網址是
+ os.ching-tech.com/projects/<專案 id>,可以直接分享)。
■ 相關的東西在哪裡
- 群組綁定的專案會影響知識庫的 scope:群組已綁定專案時,`add_note` 建立的
知識會落在該專案(專案成員可編輯)。這一段用知識庫的工具處理,不用專案工具。
- 專案相關的廠商、採購單可以從往來對象查:`get_party` 的回應含「相關專案」。
- 專案圖面與檔案在 NAS,用 `search_nas_files` 找。