refactor(*): 代码质量 - 优化前后端实现并完善协议与画布验证

This commit is contained in:
ddcat666
2026-10-08 19:38:57 +08:00
parent 9be3aa8235
commit 87ecb3000c
724 changed files with 3046 additions and 3885 deletions

View File

@@ -54,8 +54,8 @@ ARG BUILD_COMMIT=unknown
ARG BUILD_TIME=unknown
RUN --mount=type=cache,target=/root/.cache/go-build set -eu; \
version="${BUILD_VERSION:-$(tr -d '\r\n' </src/VERSION)}"; \
ldflags="-s -w -X infinite-canvas/backend/internal/buildinfo.Version=${version} -X infinite-canvas/backend/internal/buildinfo.Commit=${BUILD_COMMIT} -X infinite-canvas/backend/internal/buildinfo.BuildTime=${BUILD_TIME}"; \
CGO_ENABLED=1 GOOS=linux go build -trimpath -ldflags="$ldflags" -o /out/infinite-canvas-backend ./cmd/server; \
ldflags="-s -w -X yingce/backend/internal/buildinfo.Version=${version} -X yingce/backend/internal/buildinfo.Commit=${BUILD_COMMIT} -X yingce/backend/internal/buildinfo.BuildTime=${BUILD_TIME}"; \
CGO_ENABLED=1 GOOS=linux go build -trimpath -ldflags="$ldflags" -o /out/yingce-backend ./cmd/server; \
CGO_ENABLED=1 GOOS=linux go build -trimpath -ldflags="$ldflags" -o /out/migrate-schema ./cmd/migrate-schema; \
CGO_ENABLED=1 GOOS=linux go build -trimpath -ldflags="$ldflags" -o /out/migrate-sqlite-postgres ./cmd/migrate-sqlite-postgres
@@ -77,7 +77,7 @@ ENV CANVAS_BACKEND_ADDR=:8080
ENV CANVAS_BACKEND_DATA_DIR=/data
RUN mkdir -p /data && chown -R app:app /data
COPY --from=backend-build /out/infinite-canvas-backend /usr/local/bin/infinite-canvas-backend
COPY --from=backend-build /out/yingce-backend /usr/local/bin/yingce-backend
COPY --from=backend-build /out/migrate-schema /usr/local/bin/migrate-schema
COPY --from=backend-build /out/migrate-sqlite-postgres /usr/local/bin/migrate-sqlite-postgres
COPY --from=payment-package-smoke /app/plugin-packages /app/plugin-packages
@@ -88,4 +88,4 @@ COPY backend/agent-runtime/pi/agent-runtime.mjs /app/backend/agent-runtime/pi/ag
USER app
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 CMD wget -qO- http://127.0.0.1:8080/api/health/ready >/dev/null || exit 1
CMD ["infinite-canvas-backend"]
CMD ["yingce-backend"]

View File

@@ -15,7 +15,7 @@ setGlobalDispatcher(new Agent({
bodyTimeout: 0,
}));
const providerID = "infinite-canvas";
const providerID = "yingce";
const api = "openai-completions";

View File

@@ -1,10 +1,10 @@
{
"name": "@infinite-canvas/pi-agent-runtime",
"name": "@yingce/pi-agent-runtime",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@infinite-canvas/pi-agent-runtime",
"name": "@yingce/pi-agent-runtime",
"dependencies": {
"@earendil-works/pi-ai": "0.87.1",
"@earendil-works/pi-coding-agent": "0.87.1",

View File

@@ -1,5 +1,5 @@
{
"name": "@infinite-canvas/pi-agent-runtime",
"name": "@yingce/pi-agent-runtime",
"private": true,
"type": "module",
"engines": {

View File

@@ -14,7 +14,7 @@ import (
"syscall"
"time"
"infinite-canvas/backend/internal/hostupdate"
"yingce/backend/internal/hostupdate"
)
func main() {

View File

@@ -12,10 +12,10 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"infinite-canvas/backend/internal/service"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"yingce/backend/internal/service"
"gorm.io/gorm"
)

View File

@@ -12,10 +12,10 @@ import (
"strconv"
"strings"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"infinite-canvas/backend/internal/service"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"yingce/backend/internal/service"
"gorm.io/gorm"
)

View File

@@ -7,8 +7,8 @@ import (
"os"
"strings"
"infinite-canvas/backend/internal/canvas"
"infinite-canvas/backend/internal/database"
"yingce/backend/internal/canvas"
"yingce/backend/internal/database"
)
func main() {

View File

@@ -13,8 +13,8 @@ import (
"time"
"unicode/utf8"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"gorm.io/gorm"
"gorm.io/gorm/logger"

View File

@@ -4,8 +4,8 @@ import (
"sync"
"testing"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"gorm.io/gorm"
"gorm.io/gorm/schema"

View File

@@ -5,7 +5,7 @@ import (
"os"
"time"
paymentplugins "infinite-canvas/backend/payment-plugins"
paymentplugins "yingce/backend/payment-plugins"
)
func main() {

View File

@@ -5,7 +5,7 @@ import (
"os"
"time"
paymentplugins "infinite-canvas/backend/payment-plugins"
paymentplugins "yingce/backend/payment-plugins"
)
func main() {

View File

@@ -5,7 +5,7 @@ import (
"os"
"time"
paymentplugins "infinite-canvas/backend/payment-plugins"
paymentplugins "yingce/backend/payment-plugins"
)
func main() {

View File

@@ -5,7 +5,7 @@ import (
"os"
"time"
paymentplugins "infinite-canvas/backend/payment-plugins"
paymentplugins "yingce/backend/payment-plugins"
)
func main() {

View File

@@ -5,7 +5,7 @@ import (
"os"
"time"
paymentplugins "infinite-canvas/backend/payment-plugins"
paymentplugins "yingce/backend/payment-plugins"
)
func main() {

View File

@@ -9,10 +9,10 @@ import (
"sort"
"strings"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"infinite-canvas/backend/internal/service"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"yingce/backend/internal/service"
"gorm.io/gorm"
)

View File

@@ -16,12 +16,12 @@ import (
"syscall"
"time"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/handler"
"infinite-canvas/backend/internal/logging"
"infinite-canvas/backend/internal/repository"
"infinite-canvas/backend/internal/service"
"infinite-canvas/backend/internal/updaterclient"
"yingce/backend/internal/database"
"yingce/backend/internal/handler"
"yingce/backend/internal/logging"
"yingce/backend/internal/repository"
"yingce/backend/internal/service"
"yingce/backend/internal/updaterclient"
"github.com/gin-gonic/gin"
)

View File

@@ -5,9 +5,9 @@ import (
"net/http"
"sync/atomic"
"infinite-canvas/backend/internal/buildinfo"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/service"
"yingce/backend/internal/buildinfo"
"yingce/backend/internal/database"
"yingce/backend/internal/service"
"github.com/gin-gonic/gin"
"gorm.io/gorm"

View File

@@ -5,9 +5,9 @@ import (
"net/http/httptest"
"testing"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/repository"
"infinite-canvas/backend/internal/service"
"yingce/backend/internal/database"
"yingce/backend/internal/repository"
"yingce/backend/internal/service"
"github.com/gin-gonic/gin"
)

View File

@@ -1,4 +1,4 @@
module infinite-canvas/backend
module yingce/backend
go 1.25.0

View File

@@ -11,7 +11,7 @@ import (
"strings"
"time"
agentruntime "infinite-canvas/backend/internal/agent/runtime"
agentruntime "yingce/backend/internal/agent/runtime"
)
type Status struct {

View File

@@ -13,7 +13,7 @@ import (
"testing"
"time"
agentruntime "infinite-canvas/backend/internal/agent/runtime"
agentruntime "yingce/backend/internal/agent/runtime"
)
func TestRemoteRunCallsBridgeAndRejectsBadToken(t *testing.T) {

View File

@@ -5,8 +5,8 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/kernel"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/kernel"
"yingce/backend/internal/model"
)
type CreateAdminUserRequest struct {

View File

@@ -8,7 +8,7 @@ import (
"time"
"gorm.io/gorm"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func (s *Service) LogAPICall(log model.ApiCallLog) error {

View File

@@ -5,8 +5,8 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
type AdminUserDetail struct {

View File

@@ -3,8 +3,8 @@ package app
import (
"testing"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"golang.org/x/crypto/bcrypt"
"gorm.io/driver/sqlite"

View File

@@ -9,9 +9,9 @@ import (
"strconv"
"testing"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/outbound/outboundtest"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/outbound/outboundtest"
"yingce/backend/internal/repository"
"gorm.io/driver/sqlite"
"gorm.io/gorm"

View File

@@ -10,7 +10,7 @@ import (
"time"
"gorm.io/gorm"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func (s *Service) PublicSystemChannels() ([]PublicModelChannel, error) {

View File

@@ -5,9 +5,9 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/assets"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/assets"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/gorm"
)

View File

@@ -5,8 +5,8 @@ import (
"sort"
"strings"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
const maxAdminResourceDeleteCount = 100

View File

@@ -6,9 +6,9 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/gorm"
)

View File

@@ -8,8 +8,8 @@ import (
"testing"
"time"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/driver/sqlite"
"gorm.io/gorm"

View File

@@ -10,12 +10,12 @@ import (
"strings"
"time"
agentruntime "infinite-canvas/backend/internal/agent/runtime"
"infinite-canvas/backend/internal/agent/yingceagent"
"infinite-canvas/backend/internal/buildinfo"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/platform"
"infinite-canvas/backend/internal/repository"
agentruntime "yingce/backend/internal/agent/runtime"
"yingce/backend/internal/agent/yingceagent"
"yingce/backend/internal/buildinfo"
"yingce/backend/internal/model"
"yingce/backend/internal/platform"
"yingce/backend/internal/repository"
"github.com/redis/go-redis/v9"
)

View File

@@ -9,10 +9,10 @@ import (
"testing"
"time"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/platform"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"yingce/backend/internal/platform"
"yingce/backend/internal/repository"
"github.com/redis/go-redis/v9"
"gorm.io/driver/sqlite"

View File

@@ -5,8 +5,8 @@ import (
"net/http"
"strings"
"infinite-canvas/backend/internal/hostupdate"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/hostupdate"
"yingce/backend/internal/model"
)
type UpdateManager interface {

View File

@@ -4,8 +4,8 @@ import (
"testing"
"time"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/driver/sqlite"
"gorm.io/gorm"

View File

@@ -10,8 +10,8 @@ import (
"time"
"gorm.io/gorm"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
func (s *Service) RequireAdmin(user *model.User) error {

View File

@@ -6,9 +6,9 @@ import (
"reflect"
"testing"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/driver/sqlite"
"gorm.io/gorm"

View File

@@ -3,7 +3,7 @@ package app
import (
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestAllVideoProtocolsQuoteReserveAndSettleWithoutProviderUsage(t *testing.T) {

View File

@@ -5,7 +5,7 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
type AnalyticsQuery struct {

View File

@@ -11,9 +11,9 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/assets"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/assets"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
func (s *Service) AdminAPICallLogs(actor *model.User, query APICallLogQuery) (*APICallLogPage, error) {

View File

@@ -9,8 +9,8 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
func normalizeAnalyticsFilter(query AnalyticsQuery) repository.AnalyticsFilter {

View File

@@ -10,7 +10,7 @@ import (
"strings"
"gorm.io/gorm"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func (s *Service) estimateCallCost(log *model.ApiCallLog) {

View File

@@ -1,6 +1,6 @@
package app
import "infinite-canvas/backend/internal/model"
import "yingce/backend/internal/model"
type AnalyticsFinance struct {
SettledOrders int `json:"settledOrders"`

View File

@@ -7,8 +7,8 @@ import (
"testing"
"time"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/driver/sqlite"
"gorm.io/gorm"

View File

@@ -10,9 +10,9 @@ import (
"time"
"unicode/utf8"
"infinite-canvas/backend/internal/assets"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/assets"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/gorm"
)

View File

@@ -4,9 +4,9 @@ import (
"testing"
"time"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/driver/sqlite"
"gorm.io/gorm"

View File

@@ -3,8 +3,8 @@ package app
import (
"testing"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/driver/sqlite"
"gorm.io/gorm"

View File

@@ -16,8 +16,8 @@ import (
"unicode"
"unicode/utf8"
"infinite-canvas/backend/internal/assets"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/assets"
"yingce/backend/internal/model"
"gorm.io/gorm"
)

View File

@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestAppearanceButtonFillRoundTripAndValidation(t *testing.T) {

View File

@@ -11,7 +11,7 @@ import (
"strings"
"unicode"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
const Live2DMaxBytes int64 = 128 << 20

View File

@@ -8,7 +8,7 @@ import (
"os"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func live2DTestFiles(t *testing.T) map[string][]byte {

View File

@@ -14,9 +14,9 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/database"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/database"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/driver/sqlite"
"gorm.io/gorm"

View File

@@ -5,8 +5,8 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/assets"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/assets"
"yingce/backend/internal/model"
)
type UpdateAnnouncement struct {

View File

@@ -5,7 +5,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func updateTestValue() UpdateAnnouncement {

View File

@@ -7,8 +7,8 @@ import (
"time"
"unicode/utf8"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/gorm"
)

View File

@@ -4,8 +4,8 @@ import (
"context"
"time"
"infinite-canvas/backend/internal/auth"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/auth"
"yingce/backend/internal/model"
)
const SessionCookieName = auth.SessionCookieName

View File

@@ -6,10 +6,10 @@ import (
"io"
"time"
"infinite-canvas/backend/internal/assets"
"infinite-canvas/backend/internal/canvas"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/assets"
"yingce/backend/internal/canvas"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
type (

View File

@@ -2,7 +2,7 @@ package app
import (
"errors"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
"os"
"path/filepath"
"strings"

View File

@@ -8,7 +8,7 @@ import (
"sort"
"strings"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
type ChannelModelsRequest struct {

View File

@@ -7,8 +7,8 @@ import (
"strings"
"sync"
"infinite-canvas/backend/internal/provider"
"infinite-canvas/backend/internal/provider/bailian"
"yingce/backend/internal/provider"
"yingce/backend/internal/provider/bailian"
)
var pluginsInitOnce sync.Once

View File

@@ -4,7 +4,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestChannelModelLabelSaveAndCatalogPreserveChannelIdentity(t *testing.T) {

View File

@@ -6,8 +6,8 @@ import (
"sort"
"strings"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
type ChannelModelRepriceRequest struct {

View File

@@ -4,8 +4,8 @@ import (
"errors"
"testing"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"gorm.io/gorm"
)

View File

@@ -3,7 +3,7 @@ package app
import (
"strings"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func normalizeChannelModelTags(input []model.ChannelModelTag) ([]model.ChannelModelTag, error) {

View File

@@ -4,7 +4,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestChannelModelTagsValidation(t *testing.T) {

View File

@@ -3,7 +3,7 @@ package app
import (
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
// 模型级上游键重命名后,任务请求必须使用新键;价格档中与旧值相同的上游键属于

View File

@@ -7,9 +7,9 @@ import (
"time"
"gorm.io/gorm"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/protocol"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/protocol"
"yingce/backend/internal/repository"
)
type ChannelModelRequest struct {

View File

@@ -6,7 +6,7 @@ import (
"context"
"strings"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func (s *Service) FetchAdminChannelModels(ctx context.Context, actor *model.User, channelID string) (*AdminChannelModelFetchResult, error) {

View File

@@ -7,7 +7,7 @@ import (
"strconv"
"strings"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func validateChannelModelTierCapabilities(tiers []model.ChannelModelPriceTier, rawCapabilityConfig string, capability string) error {

View File

@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func mustEncodeModelCapabilityConfig(t *testing.T, config *ModelCapabilityConfig) string {

View File

@@ -9,7 +9,7 @@ import (
"strings"
"time"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func (s *Service) TestAdminChannelModel(ctx context.Context, actor *model.User, channelID string, req ChannelModelRequest) (*AdminChannelModelTestResult, error) {

View File

@@ -2,8 +2,8 @@ package app
import (
"errors"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
"net/http"
)

View File

@@ -1,7 +1,7 @@
package app
import (
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
"testing"
)

View File

@@ -3,7 +3,7 @@ package app
import (
"time"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func (req ChannelRequest) presentationOnly() bool {

View File

@@ -7,7 +7,7 @@ import (
"testing"
"time"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestChannelPresentationUsesModelLabelsAndPublicOrder(t *testing.T) {

View File

@@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"
"infinite-canvas/backend/internal/prompts"
"yingce/backend/internal/prompts"
)
func TestChapterAssetsPromptContract(t *testing.T) {

View File

@@ -13,8 +13,8 @@ import (
"unicode/utf8"
"gorm.io/gorm"
"infinite-canvas/backend/internal/kernel"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/kernel"
"yingce/backend/internal/model"
)
const cloudAgentOperation = "cloud_agent"

View File

@@ -3,8 +3,8 @@ package app
import (
"strings"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
// The anchor records the current request and observable reference candidates.

View File

@@ -9,10 +9,10 @@ import (
"strings"
"unicode/utf8"
"infinite-canvas/backend/internal/canvas/capability"
"infinite-canvas/backend/internal/canvas/layout"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/canvas/capability"
"yingce/backend/internal/canvas/layout"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
// cloudAgentApprovalPreview is server-authored explanatory data. It never

View File

@@ -6,7 +6,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestCloudAgentMediaReadHashSurvivesMoveBeforeDraft(t *testing.T) {

View File

@@ -6,8 +6,8 @@ import (
"testing"
"time"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
// 停机时审批后的媒体等待会被取消。此时不能继续回写结果、也不能恢复运行时:

View File

@@ -6,8 +6,8 @@ import (
"strings"
"unicode/utf8"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
const (

View File

@@ -6,7 +6,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestCloudAgentBatchTableReferenceLimit(t *testing.T) {

View File

@@ -3,7 +3,7 @@ package app
import (
"reflect"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/repository"
)
// Persist the delta in the same transaction as the canvas and run checkpoint.

View File

@@ -6,8 +6,8 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/prompts"
"yingce/backend/internal/model"
"yingce/backend/internal/prompts"
)
func agentCanvasPatchForOperation(t *testing.T, state cloudAgentRuntime, operation string) map[string]any {

View File

@@ -5,8 +5,8 @@ import (
"fmt"
"strings"
"infinite-canvas/backend/internal/canvas/capability"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/canvas/capability"
"yingce/backend/internal/repository"
)
type cloudAgentStructuredProjector func(value any, offset int, precise bool) (any, error)

View File

@@ -4,8 +4,8 @@ import (
"fmt"
"strings"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
type cloudAgentCharacter struct {

View File

@@ -5,8 +5,8 @@ import (
"strings"
"unicode/utf8"
"infinite-canvas/backend/internal/canvas/layout"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/canvas/layout"
"yingce/backend/internal/repository"
)
const (

View File

@@ -5,7 +5,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestCloudAgentCreatesCharacterCardFromCanvasMedia(t *testing.T) {

View File

@@ -7,7 +7,7 @@ import (
"time"
"gorm.io/gorm"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func seedCloudAgentCharacter(t *testing.T, db *gorm.DB, canvasID string) map[string]any {

View File

@@ -5,8 +5,8 @@ import (
"testing"
"time"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
func TestCloudAgentContextBudgetKeepsModelWindowAndOutputSeparate(t *testing.T) {

View File

@@ -7,9 +7,9 @@ import (
"sort"
"strings"
"infinite-canvas/backend/internal/agentcontext"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/agentcontext"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
// cloudAgentContextCompactionOperation 是"压缩历史"这次独立模型调用的任务操作名。

View File

@@ -9,9 +9,9 @@ import (
"testing"
"gorm.io/gorm"
"infinite-canvas/backend/internal/agentcontext"
"infinite-canvas/backend/internal/model"
"infinite-canvas/backend/internal/repository"
"yingce/backend/internal/agentcontext"
"yingce/backend/internal/model"
"yingce/backend/internal/repository"
)
// saveCloudAgentCompactionState 用真实保存路径持久化运行状态(消息、事件与检查点同事务),

View File

@@ -7,7 +7,7 @@ import (
"time"
"gorm.io/gorm"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
// ContextFrame is a fresh projection of durable task facts, never authorization.

View File

@@ -4,7 +4,7 @@ import (
"encoding/json"
"strings"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
const (

View File

@@ -5,7 +5,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestCloudAgentContinuationReplySplitsFactsFromAssistantText(t *testing.T) {

View File

@@ -5,7 +5,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
// 自研(2026-09-15):部署改了策略或能力集后,旧轮次的 policy 快照与当前二进制不一致,

View File

@@ -7,8 +7,8 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/canvas/capability"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/canvas/capability"
"yingce/backend/internal/model"
)
func TestCloudAgentMixedCanvasReadsUnsupportedNodesWithoutGrantingCapabilities(t *testing.T) {

View File

@@ -6,7 +6,7 @@ import (
"strings"
"testing"
"infinite-canvas/backend/internal/model"
"yingce/backend/internal/model"
)
func TestCloudAgentCanvasArgumentFeedbackIdentifiesFailingOperation(t *testing.T) {

Some files were not shown because too many files have changed in this diff Show More