fix(overwrite): 只有頁面真的不存在才建新頁
- What:worklog、learn、report 三支技能共六處讀取分流改寫,只有結束碼 4 才建新頁; 結束碼 7 與 8 一律中止,一個字都不寫。三份目錄頁樣板補上寫入語意,明寫禁止整頁覆蓋、 不得改動別人的列。usage-stats.sh 的參數護欄改成明確回傳結束碼 2。 - Why:原本把「讀失敗」與「頁面不存在」當成同一件事。金鑰失效時讀取回 7,技能卻讀成 「這頁還沒有」,於是照樣板建一份新頁蓋回去。整份工作日誌會被這一筆條目取代, 既有教訓會被清成空表,報表則產出一份說「這段期間沒有工作」的假數字。 這些內容只活在 wiki 上,蓋掉就救不回來,所以這是本輪最要緊的一項。 - How:每一處讀取都先看結束碼再決定動作,並在技能文件裡列成表格: 0 接在既有內容後面附加,4 才從樣板建頁,5 缺網址就中止,7 金鑰或權限問題就中止, 8 其他 API 失敗就中止。目錄頁一律先讀整頁再改那一列。 stats 也補上分流,參數錯誤不再被讀成「零次」。 - Who:worklog、learn、report、stats 四支技能的 wiki 讀寫與統計輸出。
This commit is contained in:
+13
-3
@@ -4,13 +4,23 @@
|
||||
# usage-stats.sh skills [--cli <name>] # 每個 skill 的使用次數(降冪)
|
||||
# usage-stats.sh chains [--cli <name>] # 每條 from -> to 呼叫鏈的次數(降冪)
|
||||
# 資料: $JSC_HOME/usage/skills.jsonl、chains.jsonl(預設 $HOME/.jsc)
|
||||
#
|
||||
# 結束碼: 0=成功(資料檔不存在也算成功,印不出任何一行)2=用法錯誤(沒給子命令、
|
||||
# 子命令不認得、--cli 沒帶值)
|
||||
# 資料檔不存在為什麼算成功: hook 還沒記過任何一次用量就是這個狀態,那是「零次」,不是故障。
|
||||
set -u
|
||||
JSC_HOME="${JSC_HOME:-$HOME/.jsc}"
|
||||
cmd="${1:?usage: usage-stats.sh skills|chains [--cli <name>]}"; shift
|
||||
usage() {
|
||||
echo '用法:usage-stats.sh skills|chains [--cli <name>]' >&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
cmd="${1:-}"; [ -n "$cmd" ] || usage
|
||||
shift
|
||||
cli=""
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--cli) cli="${2:?--cli needs a value}"; shift 2 ;;
|
||||
--cli) cli="${2:-}"; [ -n "$cli" ] || usage; shift 2 ;;
|
||||
*) shift ;;
|
||||
esac
|
||||
done
|
||||
@@ -28,5 +38,5 @@ case "$cmd" in
|
||||
f="$JSC_HOME/usage/chains.jsonl"; [ -f "$f" ] || exit 0
|
||||
by_cli < "$f" | sed -n 's/.*"from":"\([^"]*\)".*"to":"\([^"]*\)".*/\1 -> \2/p' | rank ;;
|
||||
*)
|
||||
echo "unknown command: $cmd" >&2; exit 2 ;;
|
||||
echo "不認得的子命令:$cmd" >&2; usage ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user