diff --git a/src/main/services/AutoScoreService.ts b/src/main/services/AutoScoreService.ts
index 7d19ced..6570b35 100644
--- a/src/main/services/AutoScoreService.ts
+++ b/src/main/services/AutoScoreService.ts
@@ -432,7 +432,9 @@ export class AutoScoreService extends Service {
break
}
case 'set_student_status': {
- this.logger.info(`Set student status action: ${action.value} (not implemented - student type has no status field)`)
+ this.logger.info(
+ `Set student status action: ${action.value} (not implemented - student type has no status field)`
+ )
break
}
default:
diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx
index 3d502a8..4b47fee 100644
--- a/src/renderer/src/App.tsx
+++ b/src/renderer/src/App.tsx
@@ -7,12 +7,12 @@ import { Wizard } from './components/Wizard'
import { ThemeProvider } from './contexts/ThemeContext'
import { ThemeEditorProvider } from './contexts/ThemeEditorContext'
import { ThemeEditor } from './components/ThemeEditor'
-import { useTheme } from './contexts/ThemeContext';
+import { useTheme } from './contexts/ThemeContext'
function MainContent(): React.JSX.Element {
const navigate = useNavigate()
const location = useLocation()
- const { currentTheme } = useTheme();
+ const { currentTheme } = useTheme()
useEffect(() => {
if (!(window as any).api) return
diff --git a/src/renderer/src/components/AutoScoreManager.tsx b/src/renderer/src/components/AutoScoreManager.tsx
index 2d6e14d..832b412 100644
--- a/src/renderer/src/components/AutoScoreManager.tsx
+++ b/src/renderer/src/components/AutoScoreManager.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react'
+import { useState, useEffect } from 'react'
import { AddIcon, MoveIcon } from 'tdesign-icons-react'
import { allTriggers, allActions, triggerRegistry, actionRegistry } from './com.automatically'
import type { TriggerItem, ActionItem } from './com.automatically/types'
@@ -278,9 +278,7 @@ export const AutoScoreManager: React.FC = () => {
}
const handleTriggerChange = (id: number, eventName: string) => {
- setTriggerList((prev) =>
- prev.map((t) => (t.id === id ? { ...t, eventName, value: '' } : t))
- )
+ setTriggerList((prev) => prev.map((t) => (t.id === id ? { ...t, eventName, value: '' } : t)))
}
const handleTriggerValueChange = (id: number, value: string) => {
@@ -310,9 +308,7 @@ export const AutoScoreManager: React.FC = () => {
}
const handleActionChange = (id: number, eventName: string) => {
- setActionList((prev) =>
- prev.map((a) => (a.id === id ? { ...a, eventName, value: '' } : a))
- )
+ setActionList((prev) => prev.map((a) => (a.id === id ? { ...a, eventName, value: '' } : a)))
}
const handleActionValueChange = (id: number, value: string) => {
@@ -565,7 +561,10 @@ export const AutoScoreManager: React.FC = () => {
if (editingRuleId !== null) {
const values = form.getFieldsValue(true) as unknown as AutoScoreRuleFormValues
const studentNames = Array.isArray(values.studentNames) ? values.studentNames : []
- const triggersPayload = triggerList.map((t) => ({ event: t.eventName, value: t.value }))
+ const triggersPayload = triggerList.map((t) => ({
+ event: t.eventName,
+ value: t.value
+ }))
const actionsPayload = actionList.map((a) => ({
event: a.eventName,
value: a.value,
diff --git a/src/renderer/src/components/Code.tsx b/src/renderer/src/components/Code.tsx
index 2683f9f..b004348 100644
--- a/src/renderer/src/components/Code.tsx
+++ b/src/renderer/src/components/Code.tsx
@@ -1,40 +1,40 @@
-import { useEffect } from "react";
+import { useEffect } from 'react'
-import Prism from "prismjs";
-import { useTheme } from '../contexts/ThemeContext';
+import Prism from 'prismjs'
+import { useTheme } from '../contexts/ThemeContext'
// 预先导入所有主题
-import "prismjs/themes/prism-coy.min.css";
-import "prismjs/themes/prism-okaidia.min.css";
+import 'prismjs/themes/prism-coy.min.css'
+import 'prismjs/themes/prism-okaidia.min.css'
const Code = ({ code, language }) => {
- const { currentTheme } = useTheme();
+ const { currentTheme } = useTheme()
- useEffect(() => {
- // 重新高亮代码
- Prism.highlightAll();
- }, [currentTheme, code, language]);
+ useEffect(() => {
+ // 重新高亮代码
+ Prism.highlightAll()
+ }, [currentTheme, code, language])
- // 根据主题设置不同的类名
- const isDark = currentTheme?.mode === 'dark';
+ // 根据主题设置不同的类名
+ const isDark = currentTheme?.mode === 'dark'
- return (
-
- );
-};
+ return (
+
+ )
+}
-export default Code;
\ No newline at end of file
+export default Code
diff --git a/src/renderer/src/components/com.automatically/ActionItem.tsx b/src/renderer/src/components/com.automatically/ActionItem.tsx
index 83d3d35..2ee06d4 100644
--- a/src/renderer/src/components/com.automatically/ActionItem.tsx
+++ b/src/renderer/src/components/com.automatically/ActionItem.tsx
@@ -1,4 +1,3 @@
-import React from 'react'
import { Button, Select } from 'tdesign-react'
import { Delete1Icon } from 'tdesign-icons-react'
import { actionRegistry, allActions } from './registry'
@@ -12,12 +11,12 @@ interface ActionItemProps {
onReasonChange: (id: number, reason: string) => void
}
-const ActionItem: React.FC = ({
- item,
- onDelete,
- onChange,
- onValueChange,
- onReasonChange
+const ActionItem: React.FC = ({
+ item,
+ onDelete,
+ onChange,
+ onValueChange,
+ onReasonChange
}) => {
const definition = actionRegistry.get(item.eventName)
const Component = definition?.component
diff --git a/src/renderer/src/components/com.automatically/TriggerItem.tsx b/src/renderer/src/components/com.automatically/TriggerItem.tsx
index cd9729f..e40c7f9 100644
--- a/src/renderer/src/components/com.automatically/TriggerItem.tsx
+++ b/src/renderer/src/components/com.automatically/TriggerItem.tsx
@@ -31,10 +31,7 @@ const TriggerItem: React.FC = ({ item, onDelete, onChange, onV
onChange={(value) => onChange(item.id, value as string)}
/>
{Component && (
- onValueChange(item.id, value)}
- />
+ onValueChange(item.id, value)} />
)}
)
diff --git a/src/renderer/src/components/com.automatically/actions/AddScoreAction.tsx b/src/renderer/src/components/com.automatically/actions/AddScoreAction.tsx
index 62f1631..f622731 100644
--- a/src/renderer/src/components/com.automatically/actions/AddScoreAction.tsx
+++ b/src/renderer/src/components/com.automatically/actions/AddScoreAction.tsx
@@ -1,4 +1,3 @@
-import React from 'react'
import { Input } from 'tdesign-react'
import type { ActionComponentProps } from '../types'
@@ -7,7 +6,12 @@ export const label = '添加分数'
export const description = '为学生添加分数'
export const hasReason = true
-const AddScoreAction: React.FC = ({ value, reason, onChange, onReasonChange }) => {
+const AddScoreAction: React.FC = ({
+ value,
+ reason,
+ onChange,
+ onReasonChange
+}) => {
return (
<>
actionRegistry.register(def))
-export {
- AddScoreAction,
- AddTagAction,
- SendNotificationAction,
- SetStudentStatusAction
-}
+export { AddScoreAction, AddTagAction, SendNotificationAction, SetStudentStatusAction }
diff --git a/src/renderer/src/components/com.automatically/index.ts b/src/renderer/src/components/com.automatically/index.ts
index 35af83f..6174c33 100644
--- a/src/renderer/src/components/com.automatically/index.ts
+++ b/src/renderer/src/components/com.automatically/index.ts
@@ -2,16 +2,21 @@ import './triggers'
import './actions'
export { triggerRegistry, actionRegistry, allTriggers, allActions } from './registry'
-export type {
- TriggerComponentProps,
- ActionComponentProps,
- TriggerDefinition,
+export type {
+ TriggerComponentProps,
+ ActionComponentProps,
+ TriggerDefinition,
ActionDefinition,
TriggerItem,
- ActionItem
+ ActionItem
} from './types'
export { default as TriggerItemComponent } from './TriggerItem'
export { default as ActionItemComponent } from './ActionItem'
export { IntervalTimeTrigger, StudentTagTrigger, RandomTimeTrigger } from './triggers'
-export { AddScoreAction, AddTagAction, SendNotificationAction, SetStudentStatusAction } from './actions'
+export {
+ AddScoreAction,
+ AddTagAction,
+ SendNotificationAction,
+ SetStudentStatusAction
+} from './actions'
diff --git a/src/renderer/src/components/com.automatically/triggers/IntervalTimeTrigger.tsx b/src/renderer/src/components/com.automatically/triggers/IntervalTimeTrigger.tsx
index b466c05..3ec2dfc 100644
--- a/src/renderer/src/components/com.automatically/triggers/IntervalTimeTrigger.tsx
+++ b/src/renderer/src/components/com.automatically/triggers/IntervalTimeTrigger.tsx
@@ -1,4 +1,3 @@
-import React from 'react'
import { InputNumber } from 'tdesign-react'
import type { TriggerComponentProps } from '../types'
@@ -22,7 +21,7 @@ const IntervalTimeTrigger: React.FC = ({ value, onChange
const numValue = value ? parseInt(value, 10) : undefined
const handleChange = (v: any) => {
- const numV = typeof v === 'number' ? v : (v ? Number(v) : undefined)
+ const numV = typeof v === 'number' ? v : v ? Number(v) : undefined
onChange(numV !== undefined && numV !== null && !isNaN(numV) ? String(numV) : '')
}
diff --git a/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx b/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx
index afb6f13..e27ab32 100644
--- a/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx
+++ b/src/renderer/src/components/com.automatically/triggers/RandomTimeTrigger.tsx
@@ -1,4 +1,3 @@
-import React from 'react'
import { InputNumber, Row, Col } from 'tdesign-react'
import type { TriggerComponentProps } from '../types'
@@ -33,7 +32,7 @@ const RandomTimeTrigger: React.FC = ({ value, onChange })
} catch {}
const handleChange = (key: keyof RandomTimeConfig, v: any) => {
- const numV = typeof v === 'number' ? v : (v ? Number(v) : undefined)
+ const numV = typeof v === 'number' ? v : v ? Number(v) : undefined
const newConfig = { ...config, [key]: numV ?? (key === 'minHour' ? 0 : 23) }
onChange(JSON.stringify(newConfig))
}
diff --git a/src/renderer/src/components/com.automatically/triggers/StudentTagTrigger.tsx b/src/renderer/src/components/com.automatically/triggers/StudentTagTrigger.tsx
index 741e0ab..1c66ef6 100644
--- a/src/renderer/src/components/com.automatically/triggers/StudentTagTrigger.tsx
+++ b/src/renderer/src/components/com.automatically/triggers/StudentTagTrigger.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from 'react'
+import { useState, useEffect } from 'react'
import { Select } from 'tdesign-react'
import type { TriggerComponentProps } from '../types'
diff --git a/src/renderer/src/components/com.automatically/triggers/index.ts b/src/renderer/src/components/com.automatically/triggers/index.ts
index 6251240..0d8128c 100644
--- a/src/renderer/src/components/com.automatically/triggers/index.ts
+++ b/src/renderer/src/components/com.automatically/triggers/index.ts
@@ -1,23 +1,23 @@
import { triggerRegistry } from '../registry'
import type { TriggerDefinition } from '../types'
-import IntervalTimeTrigger, {
- eventName as intervalEventName,
- label as intervalLabel,
+import IntervalTimeTrigger, {
+ eventName as intervalEventName,
+ label as intervalLabel,
description as intervalDescription,
triggerLogic as intervalTriggerLogic
} from './IntervalTimeTrigger'
-import StudentTagTrigger, {
- eventName as studentTagEventName,
- label as studentTagLabel,
+import StudentTagTrigger, {
+ eventName as studentTagEventName,
+ label as studentTagLabel,
description as studentTagDescription,
triggerLogic as studentTagTriggerLogic
} from './StudentTagTrigger'
-import RandomTimeTrigger, {
- eventName as randomTimeEventName,
- label as randomTimeLabel,
+import RandomTimeTrigger, {
+ eventName as randomTimeEventName,
+ label as randomTimeLabel,
description as randomTimeDescription,
triggerLogic as randomTimeTriggerLogic
} from './RandomTimeTrigger'
@@ -48,8 +48,4 @@ const triggerDefinitions: TriggerDefinition[] = [
triggerDefinitions.forEach((def) => triggerRegistry.register(def))
-export {
- IntervalTimeTrigger,
- StudentTagTrigger,
- RandomTimeTrigger
-}
+export { IntervalTimeTrigger, StudentTagTrigger, RandomTimeTrigger }
diff --git a/src/renderer/src/components/com.automatically/types.ts b/src/renderer/src/components/com.automatically/types.ts
index 47ccbb8..3ddd79d 100644
--- a/src/renderer/src/components/com.automatically/types.ts
+++ b/src/renderer/src/components/com.automatically/types.ts
@@ -17,7 +17,11 @@ export interface TriggerLogic {
label: string
description: string
validate: (value: string) => { valid: boolean; message?: string }
- calculateNextTime?: (value: string, lastExecuted: Date | undefined, now: Date) => { delayMs: number; nextExecuteTime: Date }
+ calculateNextTime?: (
+ value: string,
+ lastExecuted: Date | undefined,
+ now: Date
+ ) => { delayMs: number; nextExecuteTime: Date }
check?: (context: any, value: string) => { shouldExecute: boolean; message?: string }
}
diff --git a/src/renderer/src/services/AutoScoreService.ts b/src/renderer/src/services/AutoScoreService.ts
index 3b92c8a..2ccefd5 100644
--- a/src/renderer/src/services/AutoScoreService.ts
+++ b/src/renderer/src/services/AutoScoreService.ts
@@ -79,9 +79,7 @@ export class AutoScoreService extends Service {
}
updateTriggerEvent(triggerList: TriggerItem[], id: number, eventName: string): TriggerItem[] {
- return triggerList.map((t) =>
- t.id === id ? { ...t, eventName, value: '' } : t
- )
+ return triggerList.map((t) => (t.id === id ? { ...t, eventName, value: '' } : t))
}
updateTriggerValue(triggerList: TriggerItem[], id: number, value: string): TriggerItem[] {
@@ -104,9 +102,7 @@ export class AutoScoreService extends Service {
}
updateActionEvent(actionList: ActionItem[], id: number, eventName: string): ActionItem[] {
- return actionList.map((a) =>
- a.id === id ? { ...a, eventName, value: '' } : a
- )
+ return actionList.map((a) => (a.id === id ? { ...a, eventName, value: '' } : a))
}
updateActionValue(actionList: ActionItem[], id: number, value: string): ActionItem[] {
diff --git a/src/shared/triggers/RandomTimeTrigger.ts b/src/shared/triggers/RandomTimeTrigger.ts
index ddab590..05e9db4 100644
--- a/src/shared/triggers/RandomTimeTrigger.ts
+++ b/src/shared/triggers/RandomTimeTrigger.ts
@@ -42,7 +42,7 @@ export const randomTimeTrigger: TriggerLogic = {
const randomHour = Math.floor(Math.random() * (maxHour - minHour + 1)) + minHour
const randomMinute = Math.floor(Math.random() * 60)
- let targetDate = new Date(now)
+ const targetDate = new Date(now)
targetDate.setHours(randomHour, randomMinute, 0, 0)
if (targetDate.getTime() <= now.getTime()) {