Compare commits

...

16 Commits

Author SHA1 Message Date
sugarBecomer 0d7d4c11a0 🐛 Login need kick 2025-11-07 12:11:50 +08:00
sugarBecomer e4d07874eb 🐛 任务执行bug和日志 2025-11-07 01:14:10 +08:00
sugarBecomer ae9984460f 🐛 取消临时err 2025-11-07 00:25:31 +08:00
sugarBecomer e38a1a4480 🐛 取消临时err 2025-11-07 00:14:41 +08:00
sugarBecomer b112f45264 🐛 onnx运行路径问题 2025-11-06 23:50:10 +08:00
sugarBecomer 6fad80b5cd 🐛 onnx运行路径问题 2025-11-06 22:39:02 +08:00
sugarBecomer 1d0e1812c8 🐛 onnx运行路径问题 2025-11-06 22:25:58 +08:00
RecordingTheSmile 40490ffe43 fix: update Dockerfile to install packages non-interactively 2025-11-06 21:31:02 +08:00
RecordingTheSmile 455b6d40de fix: update Dockerfile to include apt update before installing build-essential 2025-11-06 21:28:01 +08:00
RecordingTheSmile 62dcac103f fix: Docker构建统一使用debian镜像 2025-11-06 21:25:28 +08:00
sugarBecomer 63a83ddd5e 🐛 修改编译逻辑,安装gcc 2025-11-06 20:50:23 +08:00
sugarBecomer f8d3d6a0ad 🐛 修改编译逻辑,安装gcc 2025-11-06 20:20:41 +08:00
sugarBecomer e2eb27a5ba 🐛 修改编译逻辑,安装gcc 2025-11-06 19:52:46 +08:00
sugarBecomer 9fbeddc9f4 🐛 修改编译逻辑,安装gcc 2025-11-06 19:36:31 +08:00
sugarBecomer 289bbe3f0d 🐛 修改编译逻辑,安装gcc 2025-11-06 19:23:41 +08:00
sugarBecomer bec6a93b65 🐛 修改编译逻辑,安装gcc 2025-11-06 19:21:51 +08:00
9 changed files with 73 additions and 15 deletions
+5 -4
View File
@@ -1,15 +1,16 @@
FROM golang:alpine AS backend-builder
RUN apk add --no-cache build-base
FROM golang:latest AS backend-builder
RUN apt update
RUN apt install -y build-essential
WORKDIR /build
COPY . .
ENV CGO_ENABLED=1
RUN go build -ldflags="-s -w" -o bin/server
RUN apk add --no-cache upx
RUN apt install -y upx-ucl
RUN upx --best --lzma bin/server
FROM alpine:latest
FROM golang:latest
COPY --from=backend-builder /build/bin/server /app/server
COPY static /app/static
COPY static/*.so /app/
+6 -1
View File
@@ -37,4 +37,9 @@ fromName = "今日校园系统"
accessKey = "dzckoE1UlZe8XFItWQDI"
secretKey = "f8UZdnDohtwZk5HInT1Cw1QCztSGnFuPPqfSSjzu"
baseUrl = "http://s3.out"
bucket = "likedream"
bucket = "likedream"
[cpdaily]
appVersion = "5.7.0"
systemVersion = "iOS 17"
calVersion = "3.0.0"
+24 -1
View File
@@ -5,9 +5,14 @@ import (
"fmt"
_ "image/jpeg"
_ "image/png"
"likedream-goframe/internal/framework/logger"
"os"
"path/filepath"
"runtime"
"strings"
ort "github.com/yalue/onnxruntime_go"
"go.uber.org/zap"
)
type ImageClassifier struct {
@@ -21,7 +26,25 @@ type ImageClassifier struct {
// NewImageClassifier 创建新的图片分类器
func NewImageClassifier(modelPath, classesPath string) (*ImageClassifier, error) {
// 初始化ONNX Runtime
err := ort.InitializeEnvironment()
exePath := strings.ToLower(os.Args[0])
// 获取绝对路径
absPath, err := filepath.Abs(exePath)
dir := filepath.Dir(absPath)
systemOS := runtime.GOOS
switch systemOS {
case "windows":
dir = filepath.Join(dir, "onnxruntime.dll")
break
case "darwin":
dir = filepath.Join(dir, "onnxruntime.dylib")
break
case "linux":
dir = filepath.Join(dir, "onnxruntime.so")
break
}
logger.Logger.Info("初始化onnx:", zap.String("绝对路径", absPath), zap.String("父文件夹", dir))
ort.SetSharedLibraryPath(dir)
err = ort.InitializeEnvironment()
if err != nil {
return nil, fmt.Errorf("初始化ONNX Runtime失败: %v", err)
}
@@ -237,6 +237,7 @@ func (c *CpdailyCasLogin) Login(ctx context.Context, schoolDetail *school.School
if isCasNeedKickOut(doc) {
kickoutResponse := submitCasKickOut(ctx, loginResponseUrl.String(), doc, c.client)
handleCasLoginSuccess(ctx, kickoutResponse, schoolDetail, username, password, c.client)
return
}
message := getCasErrorMessage(doc)
@@ -605,9 +605,9 @@ func (c *CpdailySleepCheckTask) FillCustomForm(ctx context.Context, form map[str
} else {
// 否则,填充查寝其他参数
if signInstanceWidVar := rows["signInstanceWid"]; signInstanceWidVar != nil {
resultForm["signInstanceWid"] = gvar.New(signInstanceWidVar.String())
resultForm["SignInstanceWid"] = gvar.New(signInstanceWidVar.String())
} else {
resultForm["signInstanceWid"] = gvar.New("")
resultForm["SignInstanceWid"] = gvar.New("")
}
// 查找 isMalposition 参数
@@ -676,7 +676,6 @@ func (c *CpdailySleepCheckTask) Submit(ctx context.Context, form map[string]*gva
sign := taskhelper.GetSubmitSign(submitData)
submitData["sign"] = gvar.New(sign)
utils.OkOrPanic(errors.NewBusinessError(503, "临时拦截"), oops.WithContext(ctx).Wrap)
response, e := c.client.R().
SetBody(submitData).
WithContext(ctx).
+27
View File
@@ -0,0 +1,27 @@
package errors
import (
"errors"
"testing"
)
func TestBusinessError(t *testing.T) {
defer func() {
if err := recover(); err != nil {
of, b := Of[*BusinessError](err.(error))
t.Log(of, b)
t.Log("ok")
}
}()
err := NewBusinessError(503, "调试错误")
panic(err)
}
func Of[T error](input error) (T, bool) {
var ret T
if errors.As(input, &ret) {
return ret, true
}
return ret, false
}
@@ -8,6 +8,7 @@ import (
"likedream-goframe/internal/application/cpdaily/school"
task2 "likedream-goframe/internal/application/cpdaily/task"
"likedream-goframe/internal/application/cpdaily/task/formtype"
errors2 "likedream-goframe/internal/common/errors"
"likedream-goframe/internal/db"
"likedream-goframe/internal/ent"
"likedream-goframe/internal/ent/cptask"
@@ -57,6 +58,8 @@ func (c *CpdailyTaskHandler) ProcessTask(ctx context.Context, task *asynq.Task)
if e1, ok := utils.Of[*errors.BusinessError](err); ok {
errorMessage = e1.Message()
} else if e1, ok := utils.Of[*errors2.BusinessError](err); ok {
errorMessage = e1.Message
} else {
errorMessage = "未知的错误导致任务执行失败"
}
@@ -64,11 +67,11 @@ func (c *CpdailyTaskHandler) ProcessTask(ctx context.Context, task *asynq.Task)
e = db.Global.CpTaskLog.Create().
SetCpTaskID(taskPayload.CpTaskID).
SetCpUserID(targetTask.Edges.CpUser.ID).
SetSystemUserID(targetTask.Edges.CpUser.Edges.Sysuser.ID).
SetSystemUserID(targetTask.Edges.SysUser.ID).
SetIsSuccess(false).
SetRealName("").
SetErrorMessage(errorMessage).
Exec(ctx)
Exec(context.Background())
utils.LogError(ctx, "创建任务日志失败", oops.With("task_id", taskPayload.CpTaskID).Wrap(e))
@@ -127,7 +130,6 @@ func (c *CpdailyTaskHandler) ProcessTask(ctx context.Context, task *asynq.Task)
}
submitForm := taskExecutor.FillCustomForm(ctx, cpdailyRealTask, customFormItems, deviceID, targetTask.Edges.CpUser.Username)
utils.OkOrPanic(errors.NewBusinessError(400, "临时错误"))
taskExecutor.Submit(ctx, submitForm, targetTask.Edges.CpUser.Username, deviceID)
db.Global.CpTask.UpdateOneID(taskPayload.CpTaskID).SetTaskStatus(cptask.TaskStatusDone).AddSuccessCount(1).ExecX(ctx)
+1 -1
View File
@@ -118,7 +118,7 @@ func (ts *TaskScanner) scanCpdailyTask() {
queue.AddTask(ts.ctx, asynq.NewTask(cst.TaskCpdaily, payloadWriter.Bytes()),
asynq.TaskID(fmt.Sprintf("cpdaily:task:%d", task.ID)),
asynq.MaxRetry(3),
asynq.Unique(10*time.Minute),
asynq.Unique(1*time.Minute),
asynq.ProcessAt(execTime),
asynq.Deadline(execTime.Add(12*time.Minute)),
asynq.Queue(cst.TaskQueueCpdaily),
+2 -2
View File
@@ -50,7 +50,7 @@ func Pass(err *error) {
if r := recover(); r != nil {
e, ok := errorx.ErrorFromPanic(r)
if ok {
*err = e
*err = oops.Wrap(e)
} else {
panic(r)
}
@@ -61,7 +61,7 @@ func HandleError(f func(error)) {
if r := recover(); r != nil {
e, ok := errorx.ErrorFromPanic(r)
if ok {
f(e)
f(oops.Wrap(e))
} else {
panic(r)
}