. ├── apps │   └── box-mgnt-api │   ├── src │   │   ├── app.config.ts │   │   ├── app.module.ts │   │   ├── config │   │   │   └── env.validation.ts │   │   ├── global.d.ts │   │   ├── main.ts │   │   └── mgnt-backend │   │   ├── core │   │   │   ├── auth │   │   │   │   ├── auth.constants.ts │   │   │   │   ├── auth.controller.ts │   │   │   │   ├── auth.dto.ts │   │   │   │   ├── auth.interface.ts │   │   │   │   ├── auth.module.ts │   │   │   │   ├── auth.service.ts │   │   │   │   ├── config │   │   │   │   │   └── jwt.config.ts │   │   │   │   ├── decorators │   │   │   │   │   └── public.decorator.ts │   │   │   │   ├── dto │   │   │   │   │   └── 2fa.dto.ts │   │   │   │   ├── guards │   │   │   │   │   ├── jwt-auth.guard.ts │   │   │   │   │   ├── local-auth.guard.ts │   │   │   │   │   ├── mfa-stage.guard.ts │   │   │   │   │   └── rbac.guard.ts │   │   │   │   ├── strategies │   │   │   │   │   ├── jwt.strategy.ts │   │   │   │   │   └── local.strategy.ts │   │   │   │   ├── totp.helper.ts │   │   │   │   └── twofa.service.ts │   │   │   ├── core.module.ts │   │   │   ├── logging │   │   │   │   ├── login-log │   │   │   │   │   ├── login-log.controller.ts │   │   │   │   │   ├── login-log.module.ts │   │   │   │   │   └── login-log.service.ts │   │   │   │   ├── operation-log │   │   │   │   │   ├── operation-log.controller.ts │   │   │   │   │   ├── operation-log.module.ts │   │   │   │   │   └── operation-log.service.ts │   │   │   │   └── quota-log │   │   │   │   ├── quota-log.controller.ts │   │   │   │   ├── quota-log.module.ts │   │   │   │   └── quota-log.service.ts │   │   │   ├── menu │   │   │   │   ├── menu.constants.ts │   │   │   │   ├── menu.controller.ts │   │   │   │   ├── menu.dto.ts │   │   │   │   ├── menu.interface.ts │   │   │   │   ├── menu.module.ts │   │   │   │   └── menu.service.ts │   │   │   ├── role │   │   │   │   ├── role.constants.ts │   │   │   │   ├── role.controller.ts │   │   │   │   ├── role.dto.ts │   │   │   │   ├── role.module.ts │   │   │   │   └── role.service.ts │   │   │   └── user │   │   │   ├── user.constants.ts │   │   │   ├── user.controller.ts │   │   │   ├── user.dto.ts │   │   │   ├── user.module.ts │   │   │   └── user.service.ts │   │   ├── feature │   │   │   ├── ads │   │   │   │   ├── ads.controller.ts │   │   │   │   ├── ads.dto.ts │   │   │   │   ├── ads.module.ts │   │   │   │   └── ads.service.ts │   │   │   ├── category │   │   │   │   ├── category.controller.ts │   │   │   │   ├── category.dto.ts │   │   │   │   ├── category.module.ts │   │   │   │   └── category.service.ts │   │   │   ├── channel │   │   │   │   ├── channel.controller.ts │   │   │   │   ├── channel.dto.ts │   │   │   │   ├── channel.module.ts │   │   │   │   └── channel.service.ts │   │   │   ├── common │   │   │   │   ├── mongo-id.dto.ts │   │   │   │   └── status.enum.ts │   │   │   ├── feature.module.ts │   │   │   ├── mgnt-http-service │   │   │   │   ├── mgnt-http-service.config.ts │   │   │   │   ├── mgnt-http-service.module.ts │   │   │   │   └── mgnt-http.service.ts │   │   │   ├── oss │   │   │   │   ├── oss.config.ts │   │   │   │   ├── oss.controller.ts │   │   │   │   ├── oss.module.ts │   │   │   │   └── oss.service.ts │   │   │   ├── s3 │   │   │   │   ├── s3.config.ts │   │   │   │   ├── s3.controller.ts │   │   │   │   ├── s3.module.ts │   │   │   │   └── s3.service.ts │   │   │   ├── sync-videomedia │   │   │   │   ├── sync-videomedia.controller.ts │   │   │   │   ├── sync-videomedia.module.ts │   │   │   │   └── sync-videomedia.service.ts │   │   │   ├── system-params │   │   │   │   ├── system-param.dto.ts │   │   │   │   ├── system-params.controller.ts │   │   │   │   ├── system-params.module.ts │   │   │   │   └── system-params.service.ts │   │   │   ├── tag │   │   │   │   ├── tag.controller.ts │   │   │   │   ├── tag.dto.ts │   │   │   │   ├── tag.module.ts │   │   │   │   └── tag.service.ts │   │   │   └── video-media │   │   │   ├── video-media.controller.ts │   │   │   ├── video-media.dto.ts │   │   │   ├── video-media.module.ts │   │   │   └── video-media.service.ts │   │   └── mgnt-backend.module.ts │   └── tsconfig.json ├── ARCHITECTURE_FLOW.md ├── BEFORE_AFTER.md ├── box-mgnt-note.md ├── box-nestjs-monorepo-init.md ├── DEPLOYMENT_CHECKLIST.md ├── DEVELOPER_GUIDE.md ├── IMPLEMENTATION_SUMMARY.md ├── libs │   ├── common │   │   ├── package.json │   │   ├── src │   │   │   ├── common.module.ts │   │   │   ├── config │   │   │   │   └── pino.config.ts │   │   │   ├── crypto │   │   │   │   └── aes-gcm.ts │   │   │   ├── decorators │   │   │   │   ├── auth-user.decorator.ts │   │   │   │   └── operation-log.decorator.ts │   │   │   ├── dto │   │   │   │   ├── page-list.dto.ts │   │   │   │   └── page-list-response.dto.ts │   │   │   ├── filters │   │   │   │   ├── all-exceptions.filter.ts │   │   │   │   ├── http-exception.filter.ts │   │   │   │   └── index.ts │   │   │   ├── guards │   │   │   │   ├── index.ts │   │   │   │   ├── mfa.guard.ts │   │   │   │   └── rate-limit.guard.ts │   │   │   ├── interceptors │   │   │   │   ├── correlation.interceptor.ts │   │   │   │   ├── logging.interceptor.ts │   │   │   │   ├── operation-log.interceptor.ts │   │   │   │   └── response.interceptor.ts │   │   │   ├── interfaces │   │   │   │   ├── api-response.interface.ts │   │   │   │   ├── index.ts │   │   │   │   ├── operation-logger.interface.ts │   │   │   │   └── response.interface.ts │   │   │   ├── services │   │   │   │   └── exception.service.ts │   │   │   ├── types │   │   │   │   └── fastify.d.ts │   │   │   └── utils │   │   │   └── image-lib.ts │   │   └── tsconfig.json │   ├── core │   │   ├── package.json │   │   ├── src │   │   └── tsconfig.json │   └── db │   ├── package.json │   ├── src │   │   ├── prisma │   │   │   ├── mongo-prisma.service.ts │   │   │   ├── mysql-prisma.service.ts │   │   │   └── prisma.module.ts │   │   ├── shared.module.ts │   │   └── utils.service.ts │   └── tsconfig.json ├── logs │   ├── error.log │   └── info.log ├── mongo-db-seeds.md ├── nest-cli.json ├── package.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── prisma │   ├── mongo │   │   └── schema │   │   ├── ads-module.prisma │   │   ├── ads.prisma │   │   ├── category.prisma │   │   ├── channel.prisma │   │   ├── home.prisma │   │   ├── main.prisma │   │   ├── system-param.prisma │   │   ├── tag.prisma │   │   └── video-media.prisma │   └── mysql │   ├── migrations │   │   ├── 20251121082348_init_db │   │   │   └── migration.sql │   │   └── migration_lock.toml │   ├── schema │   │   ├── api-permission.prisma │   │   ├── login-log.prisma │   │   ├── main.prisma │   │   ├── main.prisma.md │   │   ├── menu.prisma │   │   ├── operation-log.prisma │   │   ├── quota-log.prisma │   │   ├── role-api-permission.prisma │   │   ├── role-menu.prisma │   │   ├── role.prisma │   │   ├── seeds │   │   │   ├── menu-seeds.ts │   │   │   ├── seed-menu.ts │   │   │   ├── SEED_REVIEW.md │   │   │   └── seed-user.ts │   │   ├── user.prisma │   │   └── user-role.prisma │   └── seed.ts ├── REFACTOR_README.md ├── REFACTOR_SUMMARY.md ├── structures.txt ├── tsconfig.base.json ├── tsconfig.json └── tsconfig.seed.json 60 directories, 174 files