fix(api,ci): remove type-only imports for DI and isolate CI ports from dev
- Remove `type` keyword from NestJS injectable class imports across all modules to fix runtime DI resolution (330+ handler/listener files) - Offset CI docker-compose ports (5433/6380/8109/9002) to avoid conflicts with running dev containers - Update .env.test, playwright.config.ts, and e2e workflow to use isolated CI ports with configurable overrides - Fix prisma/seed.ts to use deterministic IDs for Prisma 7 upsert compatibility (phoneHash replaced phone as unique index) - Add dedicated Docker bridge network for CI service containers Co-Authored-By: Claude Opus 4 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import { type UserRole, type KYCStatus } from '@prisma/client';
|
||||
import { UserRole, type KYCStatus } from '@prisma/client';
|
||||
import { AggregateRoot } from '@modules/shared';
|
||||
import { UserDeactivatedEvent } from '../events/user-deactivated.event';
|
||||
import { UserKycUpdatedEvent } from '../events/user-kyc-updated.event';
|
||||
import { UserRegisteredEvent } from '../events/user-registered.event';
|
||||
import { type Email } from '../value-objects/email.vo';
|
||||
import { type HashedPassword } from '../value-objects/hashed-password.vo';
|
||||
import { type Phone } from '../value-objects/phone.vo';
|
||||
import { Email } from '../value-objects/email.vo';
|
||||
import { HashedPassword } from '../value-objects/hashed-password.vo';
|
||||
import { Phone } from '../value-objects/phone.vo';
|
||||
|
||||
export interface UserProps {
|
||||
email: Email | null;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type DomainEvent } from '@modules/shared';
|
||||
import { DomainEvent } from '@modules/shared';
|
||||
|
||||
export class AgentVerifiedEvent implements DomainEvent {
|
||||
readonly eventName = 'agent.verified';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type DomainEvent } from '@modules/shared';
|
||||
import { DomainEvent } from '@modules/shared';
|
||||
|
||||
export class UserDeactivatedEvent implements DomainEvent {
|
||||
readonly eventName = 'user.deactivated';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type KYCStatus } from '@prisma/client';
|
||||
import { type DomainEvent } from '@modules/shared';
|
||||
import { DomainEvent } from '@modules/shared';
|
||||
|
||||
export class UserKycUpdatedEvent implements DomainEvent {
|
||||
readonly eventName = 'user.kyc_updated';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { type UserRole } from '@prisma/client';
|
||||
import { type DomainEvent } from '@modules/shared';
|
||||
import { UserRole } from '@prisma/client';
|
||||
import { DomainEvent } from '@modules/shared';
|
||||
|
||||
export class UserRegisteredEvent implements DomainEvent {
|
||||
readonly eventName = 'user.registered';
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
export { USER_REPOSITORY, type IUserRepository } from './user.repository';
|
||||
export { USER_REPOSITORY, IUserRepository } from './user.repository';
|
||||
export {
|
||||
REFRESH_TOKEN_REPOSITORY,
|
||||
type IRefreshTokenRepository,
|
||||
IRefreshTokenRepository,
|
||||
type RefreshTokenRecord,
|
||||
} from './refresh-token.repository';
|
||||
export {
|
||||
MFA_CHALLENGE_REPOSITORY,
|
||||
type IMfaChallengeRepository,
|
||||
IMfaChallengeRepository,
|
||||
type MfaChallengeRecord,
|
||||
} from './mfa-challenge.repository';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { type UserEntity } from '../entities/user.entity';
|
||||
import { UserEntity } from '../entities/user.entity';
|
||||
|
||||
export const USER_REPOSITORY = Symbol('USER_REPOSITORY');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user