merge: 合併 origin/main,情感注入改由 rules.ts 的 PAD 增減換算
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,18 +1,12 @@
|
||||
import { regexTag, RULES } from './rules'
|
||||
import type { Tag } from './tags'
|
||||
import type { Pad } from './types'
|
||||
|
||||
export const clamp = (x: number, lo = -1, hi = 1) => Math.max(lo, Math.min(hi, x))
|
||||
|
||||
export const MOOD_EVENTS = {
|
||||
thanks: { p: 0.15, a: 0.05, d: 0.05 },
|
||||
scold: { p: -0.2, a: 0.15, d: -0.1 },
|
||||
success: { p: 0.08, a: 0.03, d: 0.05 },
|
||||
toolFail: { p: -0.08, a: 0.1, d: -0.08 },
|
||||
return: { p: 0.1, a: 0.08, d: 0 },
|
||||
lateNight: { p: -0.05, a: -0.1, d: 0 },
|
||||
favorite: { p: 0.12, a: 0.08, d: 0.03 },
|
||||
ignored: { p: -0.05, a: -0.03, d: -0.03 },
|
||||
} as const satisfies Record<string, Pad>
|
||||
export type MoodEvent = keyof typeof MOOD_EVENTS
|
||||
// 心情事件即評估標籤,增減量由 rules.ts 的規則表決定
|
||||
export const MOOD_EVENTS = RULES
|
||||
export type MoodEvent = Tag
|
||||
|
||||
// 八分區(Mehrabian 的 PAD 八分類)→ 情緒標籤與顏文字
|
||||
const OCTANTS: Record<string, { label: string; kaomoji: string }> = {
|
||||
@@ -34,14 +28,5 @@ export function moodLabel(m: Pad): { label: string; kaomoji: string } {
|
||||
return OCTANTS[s(m.p) + s(m.a) + s(m.d)]!
|
||||
}
|
||||
|
||||
const KEYWORDS: [MoodEvent, RegExp][] = [
|
||||
['scold', /笨|白痴|廢物|爛|你很煩|閉嘴|stupid|useless|idiot/i],
|
||||
['thanks', /謝謝|感謝|太棒|好棒|厲害|讚|thanks?|thank you|great job|awesome/i],
|
||||
['success', /成功|完成了|通過|搞定|passed|done|fixed/i],
|
||||
]
|
||||
|
||||
/** 以使用者文字的關鍵字對應心情事件 */
|
||||
export function keywordEvent(text: string): MoodEvent | null {
|
||||
for (const [ev, re] of KEYWORDS) if (re.test(text)) return ev
|
||||
return null
|
||||
}
|
||||
export const keywordEvent = (text: string): MoodEvent | null => regexTag(text)
|
||||
|
||||
Reference in New Issue
Block a user