create-pardx-scaffold 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/cli.js +104 -0
- package/package.json +15 -0
- package/template/.cursorrules +479 -0
- package/template/.prettierignore +29 -0
- package/template/.prettierrc +11 -0
- package/template/.vscode/extensions.json +8 -0
- package/template/.vscode/settings.json +122 -0
- package/template/CLAUDE.md +762 -0
- package/template/README.md +125 -0
- package/template/apps/api/.env.example +11 -0
- package/template/apps/api/.eslintrc.js +222 -0
- package/template/apps/api/config.local.yaml +397 -0
- package/template/apps/api/libs/domain/auth/package.json +11 -0
- package/template/apps/api/libs/domain/auth/src/README.md +189 -0
- package/template/apps/api/libs/domain/auth/src/auth-validation.service.ts +37 -0
- package/template/apps/api/libs/domain/auth/src/auth.guard.ts +173 -0
- package/template/apps/api/libs/domain/auth/src/auth.module.ts +23 -0
- package/template/apps/api/libs/domain/auth/src/auth.service.ts +198 -0
- package/template/apps/api/libs/domain/auth/src/auth.ts +66 -0
- package/template/apps/api/libs/domain/auth/src/decorators/presets.decorator.ts +50 -0
- package/template/apps/api/libs/domain/auth/src/decorators/rbac.decorator.ts +67 -0
- package/template/apps/api/libs/domain/auth/src/decorators/resource-owner.decorator.ts +67 -0
- package/template/apps/api/libs/domain/auth/src/dto/auth.dto.ts +10 -0
- package/template/apps/api/libs/domain/auth/src/guards/streaming-asr-session.guard.ts +179 -0
- package/template/apps/api/libs/domain/auth/src/index.ts +12 -0
- package/template/apps/api/libs/domain/auth/src/types/auth.interface.ts +52 -0
- package/template/apps/api/libs/domain/auth/tsconfig.lib.json +9 -0
- package/template/apps/api/libs/domain/db/package.json +11 -0
- package/template/apps/api/libs/domain/db/src/index.ts +14 -0
- package/template/apps/api/libs/domain/db/src/modules/country-code/country-code.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/country-code/country-code.service.ts +140 -0
- package/template/apps/api/libs/domain/db/src/modules/country-code/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/discord-auth/discord-auth.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/discord-auth/discord-auth.service.ts +101 -0
- package/template/apps/api/libs/domain/db/src/modules/discord-auth/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/email-auth/email-auth.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/email-auth/email-auth.service.ts +101 -0
- package/template/apps/api/libs/domain/db/src/modules/email-auth/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/file-source/file-source.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/file-source/file-source.service.ts +109 -0
- package/template/apps/api/libs/domain/db/src/modules/file-source/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/google-auth/google-auth.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/google-auth/google-auth.service.ts +101 -0
- package/template/apps/api/libs/domain/db/src/modules/google-auth/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/message/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/message/message.module.ts +10 -0
- package/template/apps/api/libs/domain/db/src/modules/message/message.service.ts +314 -0
- package/template/apps/api/libs/domain/db/src/modules/mobile-auth/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/mobile-auth/mobile-auth.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/mobile-auth/mobile-auth.service.ts +101 -0
- package/template/apps/api/libs/domain/db/src/modules/risk-detection-record/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/risk-detection-record/risk-detection-record.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/risk-detection-record/risk-detection-record.service.ts +101 -0
- package/template/apps/api/libs/domain/db/src/modules/system-task-queue/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/system-task-queue/system-task-queue.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/system-task-queue/system-task-queue.service.ts +101 -0
- package/template/apps/api/libs/domain/db/src/modules/user-info/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/user-info/user-info.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/user-info/user-info.service.ts +139 -0
- package/template/apps/api/libs/domain/db/src/modules/wechat-auth/index.ts +2 -0
- package/template/apps/api/libs/domain/db/src/modules/wechat-auth/wechat-auth.module.ts +12 -0
- package/template/apps/api/libs/domain/db/src/modules/wechat-auth/wechat-auth.service.ts +101 -0
- package/template/apps/api/libs/domain/db/tsconfig.lib.json +9 -0
- package/template/apps/api/libs/infra/clients/internal/ai/index.ts +2 -0
- package/template/apps/api/libs/infra/clients/internal/ai/risk-detection.client.ts +301 -0
- package/template/apps/api/libs/infra/clients/internal/ai/risk-detection.module.ts +22 -0
- package/template/apps/api/libs/infra/clients/internal/crypt/crypt-client.service.spec.ts +18 -0
- package/template/apps/api/libs/infra/clients/internal/crypt/crypt.client.ts +37 -0
- package/template/apps/api/libs/infra/clients/internal/crypt/crypt.module.ts +10 -0
- package/template/apps/api/libs/infra/clients/internal/crypt/index.ts +2 -0
- package/template/apps/api/libs/infra/clients/internal/email/dto/email.dto.ts +75 -0
- package/template/apps/api/libs/infra/clients/internal/email/index.ts +11 -0
- package/template/apps/api/libs/infra/clients/internal/email/sendcloud.client.ts +400 -0
- package/template/apps/api/libs/infra/clients/internal/file-cdn/README.md +255 -0
- package/template/apps/api/libs/infra/clients/internal/file-cdn/dto/file-cdn.dto.ts +96 -0
- package/template/apps/api/libs/infra/clients/internal/file-cdn/file-cdn-client.service.spec.ts +18 -0
- package/template/apps/api/libs/infra/clients/internal/file-cdn/file-cdn.client.ts +620 -0
- package/template/apps/api/libs/infra/clients/internal/file-cdn/file-cdn.module.ts +19 -0
- package/template/apps/api/libs/infra/clients/internal/file-cdn/index.ts +40 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/config/file.config.ts +14 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/dto/file.dto.ts +127 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/file-gcs.client.ts +154 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/file-qiniu.client.ts +729 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/file-s3.client.ts +1097 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/file-storage.interface.ts +114 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/file-tos.client.ts +767 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/file-us3.client.ts +176 -0
- package/template/apps/api/libs/infra/clients/internal/file-storage/index.ts +16 -0
- package/template/apps/api/libs/infra/clients/internal/ocr/dto/ocr.dto.ts +61 -0
- package/template/apps/api/libs/infra/clients/internal/ocr/index.ts +3 -0
- package/template/apps/api/libs/infra/clients/internal/ocr/ocr.client.ts +123 -0
- package/template/apps/api/libs/infra/clients/internal/ocr/ocr.module.ts +15 -0
- package/template/apps/api/libs/infra/clients/internal/openai/index.ts +2 -0
- package/template/apps/api/libs/infra/clients/internal/openai/openai.client.ts +135 -0
- package/template/apps/api/libs/infra/clients/internal/openai/openai.module.ts +17 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/README.md +508 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/index.ts +44 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/openspeech.client.ts +441 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/openspeech.factory.ts +450 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/openspeech.module.ts +56 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/providers/aliyun.provider.ts +308 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/providers/base.provider.ts +114 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/providers/index.ts +10 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/providers/volcengine-streaming.provider.ts +1689 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/providers/volcengine.provider.ts +387 -0
- package/template/apps/api/libs/infra/clients/internal/openspeech/types.ts +467 -0
- package/template/apps/api/libs/infra/clients/internal/sms/dto/sms.dto.ts +97 -0
- package/template/apps/api/libs/infra/clients/internal/sms/index.ts +15 -0
- package/template/apps/api/libs/infra/clients/internal/sms/sms-aliyun.client.ts +52 -0
- package/template/apps/api/libs/infra/clients/internal/sms/sms-http.client.ts +111 -0
- package/template/apps/api/libs/infra/clients/internal/sms/sms-tencent.client.ts +54 -0
- package/template/apps/api/libs/infra/clients/internal/sms/sms-volcengine.client.ts +165 -0
- package/template/apps/api/libs/infra/clients/internal/sms/sms-zxjc.client.ts +47 -0
- package/template/apps/api/libs/infra/clients/internal/sse/index.ts +2 -0
- package/template/apps/api/libs/infra/clients/internal/sse/sse-client.service.spec.ts +18 -0
- package/template/apps/api/libs/infra/clients/internal/sse/sse.client.ts +360 -0
- package/template/apps/api/libs/infra/clients/internal/sse/sse.module.ts +17 -0
- package/template/apps/api/libs/infra/clients/internal/third-party-sse/index.ts +2 -0
- package/template/apps/api/libs/infra/clients/internal/third-party-sse/third-party-sse.client.ts +51 -0
- package/template/apps/api/libs/infra/clients/internal/third-party-sse/third-party-sse.module.ts +10 -0
- package/template/apps/api/libs/infra/clients/internal/third-party-sse/third-party-sse.service.spec.ts +18 -0
- package/template/apps/api/libs/infra/clients/internal/verify/index.ts +2 -0
- package/template/apps/api/libs/infra/clients/internal/verify/verify.client.ts +42 -0
- package/template/apps/api/libs/infra/clients/internal/verify/verify.module.ts +10 -0
- package/template/apps/api/libs/infra/clients/internal/volcengine-tts/dto/tts.dto.ts +64 -0
- package/template/apps/api/libs/infra/clients/internal/volcengine-tts/index.ts +3 -0
- package/template/apps/api/libs/infra/clients/internal/volcengine-tts/volcengine-tts.client.ts +846 -0
- package/template/apps/api/libs/infra/clients/internal/volcengine-tts/volcengine-tts.module.ts +21 -0
- package/template/apps/api/libs/infra/clients/internal/wechat/index.ts +2 -0
- package/template/apps/api/libs/infra/clients/internal/wechat/wechat-client.service.spec.ts +18 -0
- package/template/apps/api/libs/infra/clients/internal/wechat/wechat.client.ts +4 -0
- package/template/apps/api/libs/infra/clients/internal/wechat/wechat.module.ts +8 -0
- package/template/apps/api/libs/infra/clients/plugin/decorators/inject-client.decorator.ts +60 -0
- package/template/apps/api/libs/infra/clients/plugin/index.ts +21 -0
- package/template/apps/api/libs/infra/clients/plugin/interceptors/http-logging.interceptor.ts +130 -0
- package/template/apps/api/libs/infra/clients/plugin/interfaces/client.interface.ts +86 -0
- package/template/apps/api/libs/infra/clients/plugin/utils/retry.util.ts +157 -0
- package/template/apps/api/libs/infra/common/adapters/base.adapter.ts +94 -0
- package/template/apps/api/libs/infra/common/adapters/index.ts +38 -0
- package/template/apps/api/libs/infra/common/config/README.md +254 -0
- package/template/apps/api/libs/infra/common/config/agentx.config.ts +91 -0
- package/template/apps/api/libs/infra/common/config/configuration.ts +289 -0
- package/template/apps/api/libs/infra/common/config/constant/config.constants.ts +92 -0
- package/template/apps/api/libs/infra/common/config/dto/config.dto.ts +282 -0
- package/template/apps/api/libs/infra/common/config/package.json +11 -0
- package/template/apps/api/libs/infra/common/config/validation/env.validation.ts +161 -0
- package/template/apps/api/libs/infra/common/config/validation/index.ts +188 -0
- package/template/apps/api/libs/infra/common/config/validation/keys.validation.ts +564 -0
- package/template/apps/api/libs/infra/common/config/validation/yaml.validation.ts +582 -0
- package/template/apps/api/libs/infra/common/decorators/app-version/app-version.controller.ts +135 -0
- package/template/apps/api/libs/infra/common/decorators/app-version/app-version.interceptor.ts +36 -0
- package/template/apps/api/libs/infra/common/decorators/app-version/app-version.module.ts +27 -0
- package/template/apps/api/libs/infra/common/decorators/app-version/app-version.service.ts +252 -0
- package/template/apps/api/libs/infra/common/decorators/app-version/index.ts +13 -0
- package/template/apps/api/libs/infra/common/decorators/cache/cache.decorator.ts +437 -0
- package/template/apps/api/libs/infra/common/decorators/cache/cache.interceptor.ts +268 -0
- package/template/apps/api/libs/infra/common/decorators/cache/cache.module.ts +24 -0
- package/template/apps/api/libs/infra/common/decorators/cache/index.ts +33 -0
- package/template/apps/api/libs/infra/common/decorators/event/event.decorator.ts +229 -0
- package/template/apps/api/libs/infra/common/decorators/event/event.interceptor.ts +155 -0
- package/template/apps/api/libs/infra/common/decorators/event/event.module.ts +47 -0
- package/template/apps/api/libs/infra/common/decorators/event/handlers/cache-event.handler.ts +159 -0
- package/template/apps/api/libs/infra/common/decorators/event/index.ts +29 -0
- package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.decorator.ts +221 -0
- package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.interceptor.ts +150 -0
- package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.module.ts +27 -0
- package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.service.spec.ts +330 -0
- package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.service.ts +423 -0
- package/template/apps/api/libs/infra/common/decorators/feature-flag/index.ts +28 -0
- package/template/apps/api/libs/infra/common/decorators/rate-limit/dto/rate-limit.dto.ts +201 -0
- package/template/apps/api/libs/infra/common/decorators/rate-limit/index.ts +54 -0
- package/template/apps/api/libs/infra/common/decorators/rate-limit/rate-limit.decorator.ts +216 -0
- package/template/apps/api/libs/infra/common/decorators/rate-limit/rate-limit.exception.ts +74 -0
- package/template/apps/api/libs/infra/common/decorators/rate-limit/rate-limit.module.ts +37 -0
- package/template/apps/api/libs/infra/common/decorators/rate-limit/rate-limit.service.ts +430 -0
- package/template/apps/api/libs/infra/common/decorators/response.decorator.ts +67 -0
- package/template/apps/api/libs/infra/common/decorators/skip-version-check.decorator.ts +27 -0
- package/template/apps/api/libs/infra/common/decorators/transaction/index.ts +12 -0
- package/template/apps/api/libs/infra/common/decorators/transaction/transactional.decorator.ts +677 -0
- package/template/apps/api/libs/infra/common/decorators/ts-rest-controller.decorator.ts +63 -0
- package/template/apps/api/libs/infra/common/decorators/validation.decorator.ts +120 -0
- package/template/apps/api/libs/infra/common/decorators/version/index.ts +24 -0
- package/template/apps/api/libs/infra/common/decorators/version/version.decorator.ts +168 -0
- package/template/apps/api/libs/infra/common/decorators/version/version.interceptor.ts +97 -0
- package/template/apps/api/libs/infra/common/decorators/version/version.module.ts +21 -0
- package/template/apps/api/libs/infra/common/enums/action.enum.ts +7 -0
- package/template/apps/api/libs/infra/common/enums/error-codes.ts +71 -0
- package/template/apps/api/libs/infra/common/enums/role.enum.ts +4 -0
- package/template/apps/api/libs/infra/common/filter/exception/api.exception.ts +168 -0
- package/template/apps/api/libs/infra/common/filter/exception/exception.ts +47 -0
- package/template/apps/api/libs/infra/common/filter/exception/http.exception.ts +126 -0
- package/template/apps/api/libs/infra/common/guards/index.ts +1 -0
- package/template/apps/api/libs/infra/common/guards/version.guard.ts +312 -0
- package/template/apps/api/libs/infra/common/interceptor/mask/index.ts +1 -0
- package/template/apps/api/libs/infra/common/interceptor/mask/mask.interceptor.ts +242 -0
- package/template/apps/api/libs/infra/common/interceptor/rate-limit/no-rate-limit.interceptor.ts +14 -0
- package/template/apps/api/libs/infra/common/interceptor/rate-limit/rate-limit.interceptor.ts +230 -0
- package/template/apps/api/libs/infra/common/interceptor/transform/transform.interceptor.spec.ts +7 -0
- package/template/apps/api/libs/infra/common/interceptor/transform/transform.interceptor.ts +75 -0
- package/template/apps/api/libs/infra/common/interceptor/version/index.ts +1 -0
- package/template/apps/api/libs/infra/common/interceptor/version/version-header.interceptor.ts +62 -0
- package/template/apps/api/libs/infra/common/middleware/request.middleware.ts +109 -0
- package/template/apps/api/libs/infra/common/package.json +11 -0
- package/template/apps/api/libs/infra/common/pipes/transform-root.pipe.ts +12 -0
- package/template/apps/api/libs/infra/common/ts-rest/index.ts +26 -0
- package/template/apps/api/libs/infra/common/ts-rest/response.helper.ts +233 -0
- package/template/apps/api/libs/infra/i18n/en/errors.json +77 -0
- package/template/apps/api/libs/infra/i18n/en/events.json +1 -0
- package/template/apps/api/libs/infra/i18n/package.json +11 -0
- package/template/apps/api/libs/infra/i18n/zh-CN/errors.json +77 -0
- package/template/apps/api/libs/infra/i18n/zh-CN/events.json +1 -0
- package/template/apps/api/libs/infra/jwt/dto/jwt.dto.ts +1 -0
- package/template/apps/api/libs/infra/jwt/jwt.module.ts +26 -0
- package/template/apps/api/libs/infra/jwt/package.json +11 -0
- package/template/apps/api/libs/infra/prisma/db-metrics/package.json +11 -0
- package/template/apps/api/libs/infra/prisma/db-metrics/src/db-metrics.module.ts +141 -0
- package/template/apps/api/libs/infra/prisma/db-metrics/src/db-metrics.service.ts +456 -0
- package/template/apps/api/libs/infra/prisma/db-metrics/src/index.ts +2 -0
- package/template/apps/api/libs/infra/prisma/db-metrics/tsconfig.lib.json +9 -0
- package/template/apps/api/libs/infra/prisma/middleware/soft-delete.middleware.ts +179 -0
- package/template/apps/api/libs/infra/prisma/package.json +11 -0
- package/template/apps/api/libs/infra/prisma/prisma/index.ts +3 -0
- package/template/apps/api/libs/infra/prisma/prisma/prisma.module.ts +12 -0
- package/template/apps/api/libs/infra/prisma/prisma/prisma.service.ts +18 -0
- package/template/apps/api/libs/infra/prisma/prisma/types.ts +6 -0
- package/template/apps/api/libs/infra/prisma/prisma-read/prisma-read.module.ts +11 -0
- package/template/apps/api/libs/infra/prisma/prisma-read/prisma-read.service.ts +280 -0
- package/template/apps/api/libs/infra/prisma/prisma-write/prisma-write.module.ts +11 -0
- package/template/apps/api/libs/infra/prisma/prisma-write/prisma-write.service.ts +278 -0
- package/template/apps/api/libs/infra/prisma/prometheus/index.ts +1 -0
- package/template/apps/api/libs/infra/prisma/prometheus/prometheus.module.ts +231 -0
- package/template/apps/api/libs/infra/rabbitmq/package.json +11 -0
- package/template/apps/api/libs/infra/rabbitmq/src/dto/rabbitmq.dto.ts +13 -0
- package/template/apps/api/libs/infra/rabbitmq/src/index.ts +5 -0
- package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq-events.module.ts +132 -0
- package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq-events.service.ts +199 -0
- package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq.module.ts +101 -0
- package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq.service.spec.ts +18 -0
- package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq.service.ts +543 -0
- package/template/apps/api/libs/infra/rabbitmq/tsconfig.lib.json +9 -0
- package/template/apps/api/libs/infra/redis/dto/redis.dto.ts +3 -0
- package/template/apps/api/libs/infra/redis/package.json +11 -0
- package/template/apps/api/libs/infra/redis/src/index.ts +2 -0
- package/template/apps/api/libs/infra/redis/src/redis.module.ts +63 -0
- package/template/apps/api/libs/infra/redis/src/redis.service.spec.ts +18 -0
- package/template/apps/api/libs/infra/redis/src/redis.service.ts +730 -0
- package/template/apps/api/libs/infra/redis/tsconfig.lib.json +9 -0
- package/template/apps/api/libs/infra/shared-db/index.ts +14 -0
- package/template/apps/api/libs/infra/shared-db/transaction-context.ts +51 -0
- package/template/apps/api/libs/infra/shared-db/transaction.module.ts +15 -0
- package/template/apps/api/libs/infra/shared-db/transaction.perf.spec.ts +226 -0
- package/template/apps/api/libs/infra/shared-db/transactional-service.base.ts +102 -0
- package/template/apps/api/libs/infra/shared-db/unit-of-work.service.ts +142 -0
- package/template/apps/api/libs/infra/shared-services/email/dto/email.dto.ts +87 -0
- package/template/apps/api/libs/infra/shared-services/email/email.module.ts +27 -0
- package/template/apps/api/libs/infra/shared-services/email/email.service.ts +258 -0
- package/template/apps/api/libs/infra/shared-services/email/index.ts +5 -0
- package/template/apps/api/libs/infra/shared-services/file-storage/README.md +376 -0
- package/template/apps/api/libs/infra/shared-services/file-storage/bucket-resolver.ts +306 -0
- package/template/apps/api/libs/infra/shared-services/file-storage/file-storage.factory.ts +347 -0
- package/template/apps/api/libs/infra/shared-services/file-storage/file-storage.module.ts +62 -0
- package/template/apps/api/libs/infra/shared-services/file-storage/file-storage.service.ts +849 -0
- package/template/apps/api/libs/infra/shared-services/file-storage/index.ts +57 -0
- package/template/apps/api/libs/infra/shared-services/file-storage/types.ts +210 -0
- package/template/apps/api/libs/infra/shared-services/ip-info/index.ts +2 -0
- package/template/apps/api/libs/infra/shared-services/ip-info/ip-info.module.ts +18 -0
- package/template/apps/api/libs/infra/shared-services/ip-info/ip-info.service.ts +118 -0
- package/template/apps/api/libs/infra/shared-services/sms/index.ts +11 -0
- package/template/apps/api/libs/infra/shared-services/sms/sms.factory.ts +367 -0
- package/template/apps/api/libs/infra/shared-services/sms/sms.module.ts +27 -0
- package/template/apps/api/libs/infra/shared-services/sms/sms.service.ts +315 -0
- package/template/apps/api/libs/infra/shared-services/sms/types.ts +297 -0
- package/template/apps/api/libs/infra/shared-services/streaming-asr/index.ts +50 -0
- package/template/apps/api/libs/infra/shared-services/streaming-asr/streaming-asr.module.ts +47 -0
- package/template/apps/api/libs/infra/shared-services/streaming-asr/streaming-asr.service.ts +1336 -0
- package/template/apps/api/libs/infra/shared-services/streaming-asr/types.ts +208 -0
- package/template/apps/api/libs/infra/shared-services/system-health/index.ts +3 -0
- package/template/apps/api/libs/infra/shared-services/system-health/system-health.controller.ts +61 -0
- package/template/apps/api/libs/infra/shared-services/system-health/system-health.module.ts +16 -0
- package/template/apps/api/libs/infra/shared-services/system-health/system-health.service.ts +69 -0
- package/template/apps/api/libs/infra/shared-services/uploader/index.ts +2 -0
- package/template/apps/api/libs/infra/shared-services/uploader/uploader.module.ts +11 -0
- package/template/apps/api/libs/infra/shared-services/uploader/uploader.service.ts +265 -0
- package/template/apps/api/libs/infra/utils/array-buffer.util.ts +8 -0
- package/template/apps/api/libs/infra/utils/array.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/bcrypt.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/bigint.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/bytes.convert.util.ts +13 -0
- package/template/apps/api/libs/infra/utils/crypto.util.ts +206 -0
- package/template/apps/api/libs/infra/utils/download.ts +21 -0
- package/template/apps/api/libs/infra/utils/enviroment.util.ts +130 -0
- package/template/apps/api/libs/infra/utils/ffmpeg.util.ts +29 -0
- package/template/apps/api/libs/infra/utils/file.util.ts +448 -0
- package/template/apps/api/libs/infra/utils/folder.util.ts +11 -0
- package/template/apps/api/libs/infra/utils/frame.util.ts +24 -0
- package/template/apps/api/libs/infra/utils/http-client.ts +133 -0
- package/template/apps/api/libs/infra/utils/ip.util.ts +22 -0
- package/template/apps/api/libs/infra/utils/json.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/load-env.util.ts +53 -0
- package/template/apps/api/libs/infra/utils/logger.util.ts +121 -0
- package/template/apps/api/libs/infra/utils/object.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/package.json +11 -0
- package/template/apps/api/libs/infra/utils/prisma-error.util.ts +397 -0
- package/template/apps/api/libs/infra/utils/response.ts +23 -0
- package/template/apps/api/libs/infra/utils/serialize.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/string.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/timer.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/urlencode.util.ts +3 -0
- package/template/apps/api/libs/infra/utils/validate.util.ts +3 -0
- package/template/apps/api/nest-cli.json +25 -0
- package/template/apps/api/package.json +174 -0
- package/template/apps/api/prisma/schema.prisma +352 -0
- package/template/apps/api/prisma/seed.ts +30 -0
- package/template/apps/api/scripts/generate-db-crud.js +344 -0
- package/template/apps/api/scripts/insert-country-codes.ts +325 -0
- package/template/apps/api/scripts/link-prisma.js +44 -0
- package/template/apps/api/scripts/validate-api-versions.ts +273 -0
- package/template/apps/api/src/app.module.ts +208 -0
- package/template/apps/api/src/main.ts +298 -0
- package/template/apps/api/src/modules/health/health.controller.ts +13 -0
- package/template/apps/api/src/modules/health/health.module.ts +7 -0
- package/template/apps/api/tsconfig.build.json +4 -0
- package/template/apps/api/tsconfig.json +123 -0
- package/template/apps/web/.env.example +5 -0
- package/template/apps/web/app/globals.css +27 -0
- package/template/apps/web/app/layout.tsx +19 -0
- package/template/apps/web/app/page.tsx +42 -0
- package/template/apps/web/hooks/useAspectRatioSize.ts +187 -0
- package/template/apps/web/hooks/useDebouncedValue.ts +25 -0
- package/template/apps/web/hooks/useErrorHandler.ts +113 -0
- package/template/apps/web/hooks/useHotkeys.ts +251 -0
- package/template/apps/web/hooks/useI18nToast.ts +240 -0
- package/template/apps/web/hooks/useI18nValidation.ts +262 -0
- package/template/apps/web/hooks/useNotificationSSE.ts +270 -0
- package/template/apps/web/hooks/useOperationFeedback.ts +108 -0
- package/template/apps/web/hooks/usePerformanceMonitor.ts +105 -0
- package/template/apps/web/hooks/usePermissions.ts +17 -0
- package/template/apps/web/hooks/useTask.ts +489 -0
- package/template/apps/web/hooks/useVersionCheck.ts +329 -0
- package/template/apps/web/i18n/config.ts +50 -0
- package/template/apps/web/i18n/index.ts +30 -0
- package/template/apps/web/i18n/navigation.ts +26 -0
- package/template/apps/web/i18n/request.ts +50 -0
- package/template/apps/web/i18n/routing.ts +21 -0
- package/template/apps/web/i18n/types.ts +57 -0
- package/template/apps/web/lib/actions/auth.ts +81 -0
- package/template/apps/web/lib/actions/chat.ts +129 -0
- package/template/apps/web/lib/actions/common.ts +13 -0
- package/template/apps/web/lib/actions/task.ts +20 -0
- package/template/apps/web/lib/agent/chat-client.ts +42 -0
- package/template/apps/web/lib/agent/prompts.ts +43 -0
- package/template/apps/web/lib/analytics/components/PageTracker.tsx +137 -0
- package/template/apps/web/lib/analytics/hooks/usePageTracking.ts +137 -0
- package/template/apps/web/lib/analytics/index.ts +180 -0
- package/template/apps/web/lib/api/agents.ts +7 -0
- package/template/apps/web/lib/api/agno-chat.ts +263 -0
- package/template/apps/web/lib/api/auth-server.ts +244 -0
- package/template/apps/web/lib/api/avatar-upload.ts +96 -0
- package/template/apps/web/lib/api/cache-config.ts +236 -0
- package/template/apps/web/lib/api/client.ts +649 -0
- package/template/apps/web/lib/api/contracts/client.ts +336 -0
- package/template/apps/web/lib/api/contracts/hooks/index.ts +25 -0
- package/template/apps/web/lib/api/contracts/hooks/notification.ts +180 -0
- package/template/apps/web/lib/api/contracts/hooks/setting.ts +33 -0
- package/template/apps/web/lib/api/contracts/index.ts +18 -0
- package/template/apps/web/lib/api/contracts/server-client.ts +145 -0
- package/template/apps/web/lib/api/hooks/use-python-task.ts +154 -0
- package/template/apps/web/lib/api/queries/analytics.ts +51 -0
- package/template/apps/web/lib/api/queries/message.ts +75 -0
- package/template/apps/web/lib/api.ts +179 -0
- package/template/apps/web/lib/aspect-ratio.ts +10 -0
- package/template/apps/web/lib/audio-buffer-queue.ts +273 -0
- package/template/apps/web/lib/config.ts +163 -0
- package/template/apps/web/lib/data/industry.json +369 -0
- package/template/apps/web/lib/data/region.json +501 -0
- package/template/apps/web/lib/errors/error-handler.ts +194 -0
- package/template/apps/web/lib/errors/index.ts +16 -0
- package/template/apps/web/lib/errors/streaming-asr-errors.ts +434 -0
- package/template/apps/web/lib/form/index.ts +23 -0
- package/template/apps/web/lib/form/use-form.ts +143 -0
- package/template/apps/web/lib/icons-usage.md +99 -0
- package/template/apps/web/lib/icons.tsx +395 -0
- package/template/apps/web/lib/performance/monitor.ts +225 -0
- package/template/apps/web/lib/requests.ts +177 -0
- package/template/apps/web/lib/storage/index.ts +158 -0
- package/template/apps/web/lib/upload/api.ts +260 -0
- package/template/apps/web/lib/upload/batch-uploader.ts +286 -0
- package/template/apps/web/lib/upload/errors.ts +44 -0
- package/template/apps/web/lib/upload/folder-utils.ts +295 -0
- package/template/apps/web/lib/upload/uploader.ts +439 -0
- package/template/apps/web/lib/utils/reconnect.ts +223 -0
- package/template/apps/web/lib/utils/transcript-export.ts +321 -0
- package/template/apps/web/lib/version-mismatch.ts +147 -0
- package/template/apps/web/lib/version.ts +60 -0
- package/template/apps/web/next-env.d.ts +6 -0
- package/template/apps/web/next.config.ts +97 -0
- package/template/apps/web/package.json +89 -0
- package/template/apps/web/providers/app-provider.tsx +45 -0
- package/template/apps/web/providers/index.tsx +45 -0
- package/template/apps/web/providers/query-provider.tsx +181 -0
- package/template/apps/web/providers/theme-provider.tsx +26 -0
- package/template/apps/web/tsconfig.json +30 -0
- package/template/package.json +91 -0
- package/template/packages/config/eslint/base.js +32 -0
- package/template/packages/config/eslint/next.js +134 -0
- package/template/packages/config/eslint/react-internal.js +41 -0
- package/template/packages/config/eslint.config.mjs +26 -0
- package/template/packages/config/eslint.nestjs.config.mjs +62 -0
- package/template/packages/config/index.ts +2 -0
- package/template/packages/config/package.json +44 -0
- package/template/packages/config/postcss.config.mjs +8 -0
- package/template/packages/config/prettier.config.mjs +14 -0
- package/template/packages/config/tsconfig.json +19 -0
- package/template/packages/config/typescript/base.json +20 -0
- package/template/packages/config/typescript/nextjs.json +12 -0
- package/template/packages/config/typescript/react-library.json +8 -0
- package/template/packages/constants/README.md +111 -0
- package/template/packages/constants/package.json +25 -0
- package/template/packages/constants/src/index.ts +243 -0
- package/template/packages/constants/tsconfig.build.json +13 -0
- package/template/packages/constants/tsconfig.json +12 -0
- package/template/packages/contracts/ERROR-MIGRATION.md +179 -0
- package/template/packages/contracts/README.md +203 -0
- package/template/packages/contracts/jest.config.js +11 -0
- package/template/packages/contracts/package.json +60 -0
- package/template/packages/contracts/src/api/analytics.contract.ts +45 -0
- package/template/packages/contracts/src/api/download.contract.ts +66 -0
- package/template/packages/contracts/src/api/index.ts +12 -0
- package/template/packages/contracts/src/api/message.contract.ts +70 -0
- package/template/packages/contracts/src/api/risk-words.contract.ts +44 -0
- package/template/packages/contracts/src/api/setting.contract.ts +127 -0
- package/template/packages/contracts/src/api/sign.contract.ts +269 -0
- package/template/packages/contracts/src/api/sms.contract.ts +95 -0
- package/template/packages/contracts/src/api/system.contract.ts +52 -0
- package/template/packages/contracts/src/api/task.contract.ts +58 -0
- package/template/packages/contracts/src/api/uploader.contract.ts +93 -0
- package/template/packages/contracts/src/api/user.contract.ts +60 -0
- package/template/packages/contracts/src/api/webhook.contract.ts +73 -0
- package/template/packages/contracts/src/base.ts +319 -0
- package/template/packages/contracts/src/errors/codes.ts +55 -0
- package/template/packages/contracts/src/errors/domains/common.errors.ts +212 -0
- package/template/packages/contracts/src/errors/domains/index.ts +7 -0
- package/template/packages/contracts/src/errors/domains/user.errors.ts +51 -0
- package/template/packages/contracts/src/errors/error-response.ts +145 -0
- package/template/packages/contracts/src/errors/index.ts +16 -0
- package/template/packages/contracts/src/errors/messages.ts +240 -0
- package/template/packages/contracts/src/index.ts +16 -0
- package/template/packages/contracts/src/schemas/analytics.schema.ts +81 -0
- package/template/packages/contracts/src/schemas/download.schema.ts +59 -0
- package/template/packages/contracts/src/schemas/index.ts +18 -0
- package/template/packages/contracts/src/schemas/message.schema.ts +83 -0
- package/template/packages/contracts/src/schemas/risk-words.schema.ts +25 -0
- package/template/packages/contracts/src/schemas/setting.schema.ts +84 -0
- package/template/packages/contracts/src/schemas/sign.schema.ts +171 -0
- package/template/packages/contracts/src/schemas/sms.schema.ts +53 -0
- package/template/packages/contracts/src/schemas/sse.schema.ts +30 -0
- package/template/packages/contracts/src/schemas/system.schema.ts +26 -0
- package/template/packages/contracts/src/schemas/tag.schema.ts +65 -0
- package/template/packages/contracts/src/schemas/task.schema.ts +47 -0
- package/template/packages/contracts/src/schemas/uploader.schema.ts +121 -0
- package/template/packages/contracts/src/schemas/user.schema.ts +75 -0
- package/template/packages/contracts/src/schemas/webhook.schema.ts +72 -0
- package/template/packages/contracts/tsconfig.build.json +20 -0
- package/template/packages/contracts/tsconfig.json +12 -0
- package/template/packages/types/README.md +143 -0
- package/template/packages/types/ai.ts +30 -0
- package/template/packages/types/auth.ts +99 -0
- package/template/packages/types/common.ts +13 -0
- package/template/packages/types/creative.ts +68 -0
- package/template/packages/types/image-factory.ts +122 -0
- package/template/packages/types/index.ts +8 -0
- package/template/packages/types/package.json +21 -0
- package/template/packages/types/task.ts +27 -0
- package/template/packages/types/tsconfig.json +11 -0
- package/template/packages/ui/README.md +30 -0
- package/template/packages/ui/components.json +22 -0
- package/template/packages/ui/eslint.config.js +4 -0
- package/template/packages/ui/package.json +58 -0
- package/template/packages/ui/postcss.config.mjs +6 -0
- package/template/packages/ui/src/components/accordion.tsx +66 -0
- package/template/packages/ui/src/components/alert.tsx +61 -0
- package/template/packages/ui/src/components/avatar.tsx +57 -0
- package/template/packages/ui/src/components/badge.tsx +38 -0
- package/template/packages/ui/src/components/button.tsx +60 -0
- package/template/packages/ui/src/components/calendar.tsx +71 -0
- package/template/packages/ui/src/components/card.tsx +92 -0
- package/template/packages/ui/src/components/carousel.tsx +241 -0
- package/template/packages/ui/src/components/checkbox.tsx +32 -0
- package/template/packages/ui/src/components/command.tsx +184 -0
- package/template/packages/ui/src/components/dialog.tsx +134 -0
- package/template/packages/ui/src/components/dropdown-menu.tsx +257 -0
- package/template/packages/ui/src/components/empty.tsx +104 -0
- package/template/packages/ui/src/components/field.tsx +248 -0
- package/template/packages/ui/src/components/form.tsx +172 -0
- package/template/packages/ui/src/components/input-group.tsx +170 -0
- package/template/packages/ui/src/components/input.tsx +21 -0
- package/template/packages/ui/src/components/item.tsx +193 -0
- package/template/packages/ui/src/components/label.tsx +24 -0
- package/template/packages/ui/src/components/password-strength.tsx +248 -0
- package/template/packages/ui/src/components/popover.tsx +48 -0
- package/template/packages/ui/src/components/progress.tsx +35 -0
- package/template/packages/ui/src/components/scroll-area.tsx +48 -0
- package/template/packages/ui/src/components/select.tsx +190 -0
- package/template/packages/ui/src/components/separator.tsx +28 -0
- package/template/packages/ui/src/components/sheet.tsx +139 -0
- package/template/packages/ui/src/components/sidebar.tsx +729 -0
- package/template/packages/ui/src/components/skeleton.tsx +13 -0
- package/template/packages/ui/src/components/slider.tsx +87 -0
- package/template/packages/ui/src/components/sonner.tsx +40 -0
- package/template/packages/ui/src/components/switch.tsx +31 -0
- package/template/packages/ui/src/components/tabs.tsx +66 -0
- package/template/packages/ui/src/components/textarea.tsx +18 -0
- package/template/packages/ui/src/components/tooltip.tsx +61 -0
- package/template/packages/ui/src/hooks/use-mobile.ts +21 -0
- package/template/packages/ui/src/index.ts +38 -0
- package/template/packages/ui/src/lib/utils.ts +6 -0
- package/template/packages/ui/src/styles/globals.css +134 -0
- package/template/packages/ui/tsconfig.json +11 -0
- package/template/packages/ui/tsconfig.lint.json +8 -0
- package/template/packages/utils/README.md +173 -0
- package/template/packages/utils/array.util.ts +335 -0
- package/template/packages/utils/bcrypt.util.ts +10 -0
- package/template/packages/utils/bigint.util.ts +111 -0
- package/template/packages/utils/cn.ts +6 -0
- package/template/packages/utils/encrypt.ts +104 -0
- package/template/packages/utils/fetch.ts +170 -0
- package/template/packages/utils/file.ts +275 -0
- package/template/packages/utils/headers.ts +116 -0
- package/template/packages/utils/index.ts +22 -0
- package/template/packages/utils/jest.config.js +28 -0
- package/template/packages/utils/json.util.ts +9 -0
- package/template/packages/utils/mask.util.ts +348 -0
- package/template/packages/utils/object.util.ts +149 -0
- package/template/packages/utils/package.json +112 -0
- package/template/packages/utils/serialize.util.ts +17 -0
- package/template/packages/utils/string.util.ts +159 -0
- package/template/packages/utils/timer.util.ts +210 -0
- package/template/packages/utils/tsconfig.build.json +17 -0
- package/template/packages/utils/tsconfig.json +13 -0
- package/template/packages/utils/urlencode.util.ts +18 -0
- package/template/packages/utils/validate.util.ts +25 -0
- package/template/packages/validators/README.md +149 -0
- package/template/packages/validators/jest.config.js +20 -0
- package/template/packages/validators/package.json +32 -0
- package/template/packages/validators/src/index.ts +178 -0
- package/template/packages/validators/tsconfig.build.json +19 -0
- package/template/packages/validators/tsconfig.json +12 -0
- package/template/pnpm-lock.yaml +21574 -0
- package/template/pnpm-workspace.yaml +4 -0
- package/template/scripts/generate-i18n-errors.ts +371 -0
- package/template/scripts/generate-prisma-enums.js +170 -0
- package/template/scripts/generate-prisma-enums.ts +172 -0
- package/template/scripts/init-project.js +232 -0
- package/template/turbo.json +55 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @repo/contracts
|
|
3
|
+
* Shared API contracts between frontend and backend using ts-rest
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Base types and utilities
|
|
7
|
+
export * from './base';
|
|
8
|
+
|
|
9
|
+
// Zod schemas
|
|
10
|
+
export * from './schemas';
|
|
11
|
+
|
|
12
|
+
// API contracts
|
|
13
|
+
export * from './api';
|
|
14
|
+
|
|
15
|
+
// Error codes and types
|
|
16
|
+
export * from './errors';
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Analytics Event Types
|
|
5
|
+
* 定义所有可追踪的事件类型
|
|
6
|
+
*/
|
|
7
|
+
export const AnalyticsEventTypeSchema = z.enum([
|
|
8
|
+
// Page View Events
|
|
9
|
+
'PAGE_VIEW',
|
|
10
|
+
|
|
11
|
+
// User Engagement Events
|
|
12
|
+
'SESSION_START', // 会话开始
|
|
13
|
+
'SESSION_END', // 会话结束
|
|
14
|
+
'APP_BACKGROUND', // 应用进入后台
|
|
15
|
+
'APP_FOREGROUND', // 应用回到前台
|
|
16
|
+
]);
|
|
17
|
+
|
|
18
|
+
export type AnalyticsEventType = z.infer<typeof AnalyticsEventTypeSchema>;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Base Analytics Event Properties
|
|
22
|
+
* 所有事件的基础属性
|
|
23
|
+
*/
|
|
24
|
+
export const BaseEventPropertiesSchema = z.object({
|
|
25
|
+
timestamp: z.number().optional(), // Unix timestamp (ms)
|
|
26
|
+
sessionId: z.string().optional(), // 会话ID
|
|
27
|
+
userId: z.string().optional(), // 用户ID
|
|
28
|
+
locale: z.string().optional(), // 语言环境 (en, zh)
|
|
29
|
+
platform: z.string().optional(), // 平台 (web, ios, android)
|
|
30
|
+
userAgent: z.string().optional(), // User Agent
|
|
31
|
+
referrer: z.string().optional(), // 来源页面
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Page View Event Properties
|
|
36
|
+
*/
|
|
37
|
+
export const PageViewPropertiesSchema = BaseEventPropertiesSchema.extend({
|
|
38
|
+
path: z.string(), // 页面路径
|
|
39
|
+
title: z.string().optional(), // 页面标题
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Union of all event properties
|
|
44
|
+
*/
|
|
45
|
+
export const EventPropertiesSchema = z.union([
|
|
46
|
+
BaseEventPropertiesSchema,
|
|
47
|
+
PageViewPropertiesSchema,
|
|
48
|
+
]);
|
|
49
|
+
|
|
50
|
+
export type EventProperties = z.infer<typeof EventPropertiesSchema>;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Analytics Event Schema
|
|
54
|
+
* 完整的事件数据结构
|
|
55
|
+
*/
|
|
56
|
+
export const AnalyticsEventSchema = z.object({
|
|
57
|
+
event: AnalyticsEventTypeSchema,
|
|
58
|
+
properties: EventPropertiesSchema.optional(),
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
export type AnalyticsEvent = z.infer<typeof AnalyticsEventSchema>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Batch Analytics Events Schema
|
|
65
|
+
* 批量上报事件
|
|
66
|
+
*/
|
|
67
|
+
export const BatchAnalyticsEventsSchema = z.object({
|
|
68
|
+
events: z.array(AnalyticsEventSchema),
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export type BatchAnalyticsEvents = z.infer<typeof BatchAnalyticsEventsSchema>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Analytics Response Schema
|
|
75
|
+
*/
|
|
76
|
+
export const AnalyticsResponseSchema = z.object({
|
|
77
|
+
success: z.boolean(),
|
|
78
|
+
eventsProcessed: z.number().optional(),
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
export type AnalyticsResponse = z.infer<typeof AnalyticsResponseSchema>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Download-related Zod schemas
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Operation type for file download
|
|
8
|
+
export const DownloadOperationTypeSchema = z.enum([
|
|
9
|
+
'fileViewOp',
|
|
10
|
+
'fileDownloadOp',
|
|
11
|
+
]);
|
|
12
|
+
|
|
13
|
+
export type DownloadOperationType = z.infer<typeof DownloadOperationTypeSchema>;
|
|
14
|
+
|
|
15
|
+
// Single file download params
|
|
16
|
+
export const DownloadFileParamsSchema = z.object({
|
|
17
|
+
spaceId: z.string().uuid(),
|
|
18
|
+
fileId: z.string().uuid(),
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export type DownloadFileParams = z.infer<typeof DownloadFileParamsSchema>;
|
|
22
|
+
|
|
23
|
+
// Single file download query
|
|
24
|
+
export const DownloadFileQuerySchema = z.object({
|
|
25
|
+
operationType:
|
|
26
|
+
DownloadOperationTypeSchema.optional().default('fileDownloadOp'),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export type DownloadFileQuery = z.infer<typeof DownloadFileQuerySchema>;
|
|
30
|
+
|
|
31
|
+
// Single file download response
|
|
32
|
+
export const DownloadFileResponseSchema = z.object({
|
|
33
|
+
url: z.string().url(),
|
|
34
|
+
filename: z.string().optional(),
|
|
35
|
+
contentType: z.string().optional(),
|
|
36
|
+
size: z.number().optional(),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export type DownloadFileResponse = z.infer<typeof DownloadFileResponseSchema>;
|
|
40
|
+
|
|
41
|
+
// Batch download request body
|
|
42
|
+
export const BatchDownloadRequestSchema = z.object({
|
|
43
|
+
spaceId: z.string().uuid(),
|
|
44
|
+
// folderId can be "root" (special value for space root) or a UUID
|
|
45
|
+
folderId: z.union([z.literal('root'), z.string().uuid()]).optional(),
|
|
46
|
+
fileId: z.string().uuid().optional(),
|
|
47
|
+
fileSystemIds: z.array(z.string().uuid()).optional(),
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
export type BatchDownloadRequest = z.infer<typeof BatchDownloadRequestSchema>;
|
|
51
|
+
|
|
52
|
+
// Batch download response
|
|
53
|
+
export const BatchDownloadResponseSchema = z.object({
|
|
54
|
+
url: z.string().url(),
|
|
55
|
+
filename: z.string().optional(),
|
|
56
|
+
expiresAt: z.coerce.date().optional(),
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
export type BatchDownloadResponse = z.infer<typeof BatchDownloadResponseSchema>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Auto-generated Prisma enums (source of truth)
|
|
2
|
+
export * from './prisma-enums.generated';
|
|
3
|
+
|
|
4
|
+
// Domain schemas (alphabetically ordered)
|
|
5
|
+
export * from './analytics.schema';
|
|
6
|
+
export * from './download.schema';
|
|
7
|
+
export * from './message.schema';
|
|
8
|
+
export * from './risk-words.schema';
|
|
9
|
+
export * from './setting.schema';
|
|
10
|
+
export * from './sign.schema';
|
|
11
|
+
export * from './sms.schema';
|
|
12
|
+
export * from './sse.schema';
|
|
13
|
+
export * from './system.schema';
|
|
14
|
+
export * from './tag.schema';
|
|
15
|
+
export * from './task.schema';
|
|
16
|
+
export * from './uploader.schema';
|
|
17
|
+
export * from './user.schema';
|
|
18
|
+
export * from './webhook.schema';
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message API Schemas
|
|
3
|
+
* 消息相关的 Zod Schema 定义
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { PaginationQuerySchema, PaginatedResponseSchema } from '../base';
|
|
8
|
+
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Message Schemas - 消息
|
|
11
|
+
// ============================================================================
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 消息内容 Schema
|
|
15
|
+
*/
|
|
16
|
+
export const MessageContentSchema = z.object({
|
|
17
|
+
id: z.string(),
|
|
18
|
+
type: z.string(),
|
|
19
|
+
content: z.any(),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export type MessageContent = z.infer<typeof MessageContentSchema>;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* 消息接收者 Schema
|
|
26
|
+
*/
|
|
27
|
+
export const MessageReceiverSchema = z.object({
|
|
28
|
+
id: z.string(),
|
|
29
|
+
nickname: z.string().nullable(),
|
|
30
|
+
headerImg: z.string().nullable(),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export type MessageReceiver = z.infer<typeof MessageReceiverSchema>;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 消息接收记录 Schema
|
|
37
|
+
*/
|
|
38
|
+
export const MessageRecipientSchema = z.object({
|
|
39
|
+
id: z.string(),
|
|
40
|
+
createdAt: z.coerce.date(),
|
|
41
|
+
isRead: z.boolean(),
|
|
42
|
+
readAt: z.coerce.date().nullable(),
|
|
43
|
+
message: MessageContentSchema,
|
|
44
|
+
receiver: MessageReceiverSchema,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export type MessageRecipient = z.infer<typeof MessageRecipientSchema>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* 消息列表响应 Schema - 使用标准 PaginatedResponseSchema
|
|
51
|
+
*/
|
|
52
|
+
export const MessageListResponseSchema = PaginatedResponseSchema(
|
|
53
|
+
MessageRecipientSchema,
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
export type MessageListResponse = z.infer<typeof MessageListResponseSchema>;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 消息列表查询参数 Schema
|
|
60
|
+
*/
|
|
61
|
+
export const MessageListQuerySchema = PaginationQuerySchema.extend({
|
|
62
|
+
read: z.string().optional(),
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
export type MessageListQuery = z.infer<typeof MessageListQuerySchema>;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* 设置消息已读请求 Schema
|
|
69
|
+
*/
|
|
70
|
+
export const SetMessageReadRequestSchema = z.object({
|
|
71
|
+
messageIds: z.array(z.string()),
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
export type SetMessageReadRequest = z.infer<typeof SetMessageReadRequestSchema>;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* 未读消息数量响应 Schema
|
|
78
|
+
*/
|
|
79
|
+
export const UnreadCountResponseSchema = z.object({
|
|
80
|
+
total: z.number(),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
export type UnreadCountResponse = z.infer<typeof UnreadCountResponseSchema>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Risk Words-related Zod schemas
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Check risk word request
|
|
8
|
+
export const CheckRiskWordRequestSchema = z.object({
|
|
9
|
+
text: z.string().min(1),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// Volcengine risk word detection request
|
|
13
|
+
export const VolcengineRiskWordDetectionRequestSchema = z.object({
|
|
14
|
+
text: z.string().min(1),
|
|
15
|
+
account_id: z.string().min(1),
|
|
16
|
+
biztype: z.string().optional(),
|
|
17
|
+
operate_time: z.number().optional(),
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// Risk word check response (task result - can be any)
|
|
21
|
+
export const CheckRiskWordResponseSchema = z.any();
|
|
22
|
+
|
|
23
|
+
// Volcengine detection response (can be any)
|
|
24
|
+
export const VolcengineRiskWordDetectionResponseSchema = z.any();
|
|
25
|
+
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Setting-related Zod schemas
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Send verify email request
|
|
8
|
+
export const SendVerifyEmailRequestSchema = z.object({
|
|
9
|
+
email: z.string().email(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// Setting account request
|
|
13
|
+
export const SettingAccountRequestSchema = z.object({
|
|
14
|
+
nickname: z.string().min(1),
|
|
15
|
+
code: z.string().min(1).optional(),
|
|
16
|
+
email: z.string().email().optional(),
|
|
17
|
+
emailCode: z.string().optional(),
|
|
18
|
+
mobile: z.string().optional(),
|
|
19
|
+
mobileCode: z.string().optional(),
|
|
20
|
+
oldPassword: z.string().optional(),
|
|
21
|
+
newPassword: z.string().optional(),
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Set password request
|
|
25
|
+
export const SetPasswordRequestSchema = z.object({
|
|
26
|
+
newPassword: z.string().min(6),
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// Brand schema
|
|
30
|
+
export const BrandSchema = z.object({
|
|
31
|
+
id: z.string().uuid(),
|
|
32
|
+
appearance: z.number().optional().nullable(),
|
|
33
|
+
domain: z.string().optional().nullable(),
|
|
34
|
+
logo: z.string().optional().nullable(),
|
|
35
|
+
wallpaperDomain: z.string().optional().nullable(),
|
|
36
|
+
wallpaper: z.string().optional().nullable(),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// Brand setting request
|
|
40
|
+
export const BrandSettingRequestSchema = z.object({
|
|
41
|
+
appearance: z.number().optional(),
|
|
42
|
+
domain: z.string().optional(),
|
|
43
|
+
logo: z.string().optional(),
|
|
44
|
+
wallpaperDomain: z.string().optional(),
|
|
45
|
+
wallpaper: z.string().optional(),
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Usage response schema
|
|
49
|
+
export const UsageResponseSchema = z.object({
|
|
50
|
+
storageUsed: z.number().optional(),
|
|
51
|
+
storageLimit: z.number().optional(),
|
|
52
|
+
aiCreditsUsed: z.number().optional(),
|
|
53
|
+
aiCreditsLimit: z.number().optional(),
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// Email verify request (for binding)
|
|
57
|
+
export const EmailVerifyRequestSchema = z.object({
|
|
58
|
+
email: z.string().email(),
|
|
59
|
+
code: z.string().min(1),
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// Mobile login request (for binding)
|
|
63
|
+
export const MobileLoginRequestSchema = z.object({
|
|
64
|
+
mobile: z.string().regex(/^1[3-9]\d{9}$/),
|
|
65
|
+
code: z.string().min(1),
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// Update avatar request
|
|
69
|
+
export const UpdateAvatarRequestSchema = z.object({
|
|
70
|
+
avatarFileId: z.string().uuid(),
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// Inferred types
|
|
74
|
+
export type SendVerifyEmailRequest = z.infer<
|
|
75
|
+
typeof SendVerifyEmailRequestSchema
|
|
76
|
+
>;
|
|
77
|
+
export type SettingAccountRequest = z.infer<typeof SettingAccountRequestSchema>;
|
|
78
|
+
export type SetPasswordRequest = z.infer<typeof SetPasswordRequestSchema>;
|
|
79
|
+
export type Brand = z.infer<typeof BrandSchema>;
|
|
80
|
+
export type BrandSettingRequest = z.infer<typeof BrandSettingRequestSchema>;
|
|
81
|
+
export type UsageResponse = z.infer<typeof UsageResponseSchema>;
|
|
82
|
+
export type EmailVerifyRequest = z.infer<typeof EmailVerifyRequestSchema>;
|
|
83
|
+
export type MobileLoginRequest = z.infer<typeof MobileLoginRequestSchema>;
|
|
84
|
+
export type UpdateAvatarRequest = z.infer<typeof UpdateAvatarRequestSchema>;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Sign/Auth API Schemas
|
|
5
|
+
* 登录认证相关的 Zod Schema 定义
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Request Schemas
|
|
10
|
+
// ============================================================================
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Email 登录请求
|
|
14
|
+
*/
|
|
15
|
+
export const EmailLoginSchema = z.object({
|
|
16
|
+
email: z.string().email('请输入有效的邮箱地址'),
|
|
17
|
+
password: z.string().min(6, '密码至少6个字符'),
|
|
18
|
+
});
|
|
19
|
+
export type EmailLogin = z.infer<typeof EmailLoginSchema>;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 手机号密码登录请求
|
|
23
|
+
*/
|
|
24
|
+
export const MobilePasswordLoginSchema = z.object({
|
|
25
|
+
mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
|
|
26
|
+
password: z.string().min(6, '密码至少6个字符'),
|
|
27
|
+
});
|
|
28
|
+
export type MobilePasswordLogin = z.infer<typeof MobilePasswordLoginSchema>;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 手机号验证码登录请求
|
|
32
|
+
*/
|
|
33
|
+
export const MobileCodeLoginSchema = z.object({
|
|
34
|
+
mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
|
|
35
|
+
code: z.string().min(4, '请输入验证码'),
|
|
36
|
+
});
|
|
37
|
+
export type MobileCodeLogin = z.infer<typeof MobileCodeLoginSchema>;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Email 注册请求
|
|
41
|
+
*/
|
|
42
|
+
export const EmailRegisterSchema = z.object({
|
|
43
|
+
email: z.string().email('请输入有效的邮箱地址'),
|
|
44
|
+
password: z.string().min(6, '密码至少6个字符'),
|
|
45
|
+
name: z.string().optional(),
|
|
46
|
+
});
|
|
47
|
+
export type EmailRegister = z.infer<typeof EmailRegisterSchema>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* 手机号注册请求
|
|
51
|
+
*/
|
|
52
|
+
export const MobileRegisterSchema = z.object({
|
|
53
|
+
mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
|
|
54
|
+
password: z.string().min(6, '密码至少6个字符'),
|
|
55
|
+
name: z.string().optional(),
|
|
56
|
+
code: z.string().min(4, '请输入验证码'),
|
|
57
|
+
});
|
|
58
|
+
export type MobileRegister = z.infer<typeof MobileRegisterSchema>;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Email 验证请求
|
|
62
|
+
*/
|
|
63
|
+
export const EmailVerifySchema = z.object({
|
|
64
|
+
email: z.string().email('请输入有效的邮箱地址'),
|
|
65
|
+
code: z.string().min(4, '请输入验证码'),
|
|
66
|
+
});
|
|
67
|
+
export type EmailVerify = z.infer<typeof EmailVerifySchema>;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 手机号验证请求
|
|
71
|
+
*/
|
|
72
|
+
export const MobileVerifySchema = z.object({
|
|
73
|
+
mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
|
|
74
|
+
code: z.string().min(4, '请输入验证码'),
|
|
75
|
+
});
|
|
76
|
+
export type MobileVerify = z.infer<typeof MobileVerifySchema>;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 发送验证码请求
|
|
80
|
+
*/
|
|
81
|
+
export const SendCodeSchema = z.object({
|
|
82
|
+
mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
|
|
83
|
+
});
|
|
84
|
+
export type SendCode = z.infer<typeof SendCodeSchema>;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* 发送邮箱验证码请求
|
|
88
|
+
*/
|
|
89
|
+
export const SendEmailCodeSchema = z.object({
|
|
90
|
+
email: z.string().email('请输入有效的邮箱地址'),
|
|
91
|
+
});
|
|
92
|
+
export type SendEmailCode = z.infer<typeof SendEmailCodeSchema>;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* 刷新 Token 请求
|
|
96
|
+
*/
|
|
97
|
+
export const RefreshTokenSchema = z.object({
|
|
98
|
+
refresh: z.string().min(1, '请提供 refresh token'),
|
|
99
|
+
});
|
|
100
|
+
export type RefreshToken = z.infer<typeof RefreshTokenSchema>;
|
|
101
|
+
|
|
102
|
+
// ============================================================================
|
|
103
|
+
// Response Schemas
|
|
104
|
+
// ============================================================================
|
|
105
|
+
|
|
106
|
+
export const PlanSchema = z.object({
|
|
107
|
+
id: z.string(),
|
|
108
|
+
type: z.string(),
|
|
109
|
+
name: z.string(),
|
|
110
|
+
duration: z.number(),
|
|
111
|
+
});
|
|
112
|
+
export type Plan = z.infer<typeof PlanSchema>;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* 用户基本信息
|
|
116
|
+
*/
|
|
117
|
+
export const UserInfoSchema = z.object({
|
|
118
|
+
id: z.string(),
|
|
119
|
+
isAnonymity: z.boolean().optional(),
|
|
120
|
+
isAdmin: z.boolean().optional(),
|
|
121
|
+
code: z.string().nullable(),
|
|
122
|
+
nickname: z.string().nullable(),
|
|
123
|
+
headerImg: z.string().nullable(),
|
|
124
|
+
sex: z.string().nullable(),
|
|
125
|
+
/** 手机号(已脱敏) */
|
|
126
|
+
mobile: z.string().nullable().optional(),
|
|
127
|
+
/** 邮箱(已脱敏) */
|
|
128
|
+
email: z.string().nullable().optional(),
|
|
129
|
+
});
|
|
130
|
+
export type UserInfo = z.infer<typeof UserInfoSchema>;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* 登录成功响应
|
|
134
|
+
*/
|
|
135
|
+
export const LoginSuccessSchema = z.object({
|
|
136
|
+
access: z.string(),
|
|
137
|
+
refresh: z.string(),
|
|
138
|
+
expire: z.number(),
|
|
139
|
+
accessExpire: z.number(),
|
|
140
|
+
isAnonymity: z.boolean().optional(),
|
|
141
|
+
user: UserInfoSchema,
|
|
142
|
+
});
|
|
143
|
+
export type LoginSuccess = z.infer<typeof LoginSuccessSchema>;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* 注册成功响应 - Email
|
|
147
|
+
*/
|
|
148
|
+
export const EmailAccountSchema = z.object({
|
|
149
|
+
id: z.string(),
|
|
150
|
+
email: z.string(),
|
|
151
|
+
validator: z.boolean(),
|
|
152
|
+
});
|
|
153
|
+
export type EmailAccount = z.infer<typeof EmailAccountSchema>;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* 注册成功响应 - Mobile
|
|
157
|
+
*/
|
|
158
|
+
export const MobileAccountSchema = z.object({
|
|
159
|
+
id: z.string(),
|
|
160
|
+
mobile: z.string(),
|
|
161
|
+
validator: z.boolean(),
|
|
162
|
+
});
|
|
163
|
+
export type MobileAccount = z.infer<typeof MobileAccountSchema>;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* 登出成功响应
|
|
167
|
+
*/
|
|
168
|
+
export const SignOutSuccessSchema = z.object({
|
|
169
|
+
success: z.boolean(),
|
|
170
|
+
});
|
|
171
|
+
export type SignOutSuccess = z.infer<typeof SignOutSuccessSchema>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { LoginSuccessSchema } from './sign.schema';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* SMS-related Zod schemas
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// Send SMS code request
|
|
9
|
+
export const SendSmsCodeRequestSchema = z.object({
|
|
10
|
+
phoneNumbers: z.string().regex(/^1[3-9]\d{9}$/, 'Invalid phone number'),
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
// Check verify code request
|
|
14
|
+
export const CheckVerifyCodeRequestSchema = z.object({
|
|
15
|
+
phoneNumber: z.string().regex(/^1[3-9]\d{9}$/, 'Invalid phone number'),
|
|
16
|
+
code: z.string().regex(/^\d{4,6}$/, 'Code should be 4-6 digits'),
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
// Mobile code send request
|
|
20
|
+
export const MobileCodeSendRequestSchema = z.object({
|
|
21
|
+
mobile: z.string().regex(/^1[3-9]\d{9}$/, 'Invalid phone number'),
|
|
22
|
+
iddCode: z.string().optional().default('0086'),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// Mobile login request (SMS)
|
|
26
|
+
export const SmsMobileLoginRequestSchema = z.object({
|
|
27
|
+
mobile: z.string().regex(/^1[3-9]\d{9}$/, 'Invalid phone number'),
|
|
28
|
+
code: z.string().min(1),
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Send SMS code response
|
|
32
|
+
export const SendSmsCodeResponseSchema = z.object({
|
|
33
|
+
success: z.boolean(),
|
|
34
|
+
message: z.string().optional(),
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// Check verify code response
|
|
38
|
+
export const CheckVerifyCodeResponseSchema = z.object({
|
|
39
|
+
success: z.boolean(),
|
|
40
|
+
result: z.string().optional(),
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Send login code response
|
|
44
|
+
export const SendLoginCodeResponseSchema = z.object({
|
|
45
|
+
success: z.boolean(),
|
|
46
|
+
message: z.string().optional(),
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// Send register code response
|
|
50
|
+
export const SendRegisterCodeResponseSchema = z.object({
|
|
51
|
+
phoneNumber: z.string(),
|
|
52
|
+
expireTime: z.number(),
|
|
53
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Meeting SSE Event Schema
|
|
5
|
+
*
|
|
6
|
+
* @description P1 优化:统一的会议相关 SSE 事件格式
|
|
7
|
+
* 用于转写、摘要生成、知识提取等会议相关任务的实时状态推送
|
|
8
|
+
*/
|
|
9
|
+
export const MeetingSSEEventSchema = z.object({
|
|
10
|
+
/** 事件类型 */
|
|
11
|
+
type: z.enum(['transcription', 'summary']),
|
|
12
|
+
/** 会议 ID */
|
|
13
|
+
meetingId: z.string().uuid(),
|
|
14
|
+
/** 任务状态 */
|
|
15
|
+
status: z.enum(['processing', 'success', 'error']),
|
|
16
|
+
/** 事件数据(可选) */
|
|
17
|
+
data: z.any().optional(),
|
|
18
|
+
/** 错误信息(可选,仅在 status='error' 时存在) */
|
|
19
|
+
error: z.string().optional(),
|
|
20
|
+
/** 时间戳(毫秒) */
|
|
21
|
+
timestamp: z.number(),
|
|
22
|
+
/** 任务 ID(可选,用于关联 Python Task) */
|
|
23
|
+
taskId: z.string().uuid().optional(),
|
|
24
|
+
/** 进度(0-100,可选) */
|
|
25
|
+
progress: z.number().min(0).max(100).optional(),
|
|
26
|
+
/** 当前步骤描述(可选) */
|
|
27
|
+
currentStep: z.string().optional(),
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
export type MeetingSSEEvent = z.infer<typeof MeetingSSEEventSchema>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* System-related Zod schemas
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Permission config response
|
|
8
|
+
export const PermissionConfigResponseSchema = z.object({
|
|
9
|
+
role: z.array(z.enum(['owner', 'admin', 'member', 'guest'])),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// Service ready response
|
|
13
|
+
export const ServiceReadyResponseSchema = z.literal('ready');
|
|
14
|
+
|
|
15
|
+
// Health check details
|
|
16
|
+
export const HealthCheckDetailsSchema = z.object({
|
|
17
|
+
db: z.enum(['healthy', 'unhealthy']),
|
|
18
|
+
rabbitmq: z.enum(['healthy', 'unhealthy']),
|
|
19
|
+
redis: z.enum(['healthy', 'unhealthy']),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Health check response
|
|
23
|
+
export const HealthCheckResponseSchema = z.object({
|
|
24
|
+
status: z.enum(['healthy', 'unhealthy']),
|
|
25
|
+
details: HealthCheckDetailsSchema,
|
|
26
|
+
});
|