This commit is contained in:
+2
-1
@@ -6,7 +6,8 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "tsx watch src/index.ts",
|
"dev": "tsx watch src/index.ts",
|
||||||
"build": "prisma generate && tsc",
|
"build": "prisma generate && tsc",
|
||||||
"start": "prisma migrate deploy && node dist/index.js"
|
"start": "prisma migrate deploy && node dist/index.js",
|
||||||
|
"seed:demo": "tsx scripts/seed-demo.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fastify/cors": "^11.2.0",
|
"@fastify/cors": "^11.2.0",
|
||||||
|
|||||||
@@ -0,0 +1,117 @@
|
|||||||
|
import { prisma } from '../src/db.js'
|
||||||
|
|
||||||
|
function requiredEnv(name: string): string {
|
||||||
|
const value = process.env[name]?.trim()
|
||||||
|
if (!value) throw new Error(`${name} is required`)
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
const logtoId = requiredEnv('DEMO_LOGTO_USER_ID')
|
||||||
|
const teamName = process.env.DEMO_TEAM_NAME ?? 'Optovia Demo Client'
|
||||||
|
const email = process.env.DEMO_USER_EMAIL ?? 'demo@optovia.ru'
|
||||||
|
const phone = process.env.DEMO_USER_PHONE ?? '+79990000000'
|
||||||
|
const firstName = process.env.DEMO_USER_FIRST_NAME ?? 'Demo'
|
||||||
|
const lastName = process.env.DEMO_USER_LAST_NAME ?? 'Client'
|
||||||
|
const applicationUuid = '88888888-1111-4111-8111-111111111111'
|
||||||
|
const profileUuid = '88888888-2222-4111-8111-111111111111'
|
||||||
|
|
||||||
|
const application = await prisma.kYCApplication.findUnique({ where: { uuid: applicationUuid } })
|
||||||
|
|
||||||
|
let detailsId = application?.objectId ?? null
|
||||||
|
if (detailsId === null) {
|
||||||
|
const details = await prisma.kYCDetailsRussia.create({
|
||||||
|
data: {
|
||||||
|
companyName: teamName,
|
||||||
|
companyFullName: `LLC ${teamName}`,
|
||||||
|
inn: '7700000000',
|
||||||
|
kpp: '770001001',
|
||||||
|
ogrn: '1027700000000',
|
||||||
|
address: 'Demo legal address, Moscow',
|
||||||
|
bankName: 'Demo Bank',
|
||||||
|
bik: '044525225',
|
||||||
|
correspondentAccount: '30101810400000000225',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
detailsId = details.id
|
||||||
|
} else {
|
||||||
|
await prisma.kYCDetailsRussia.update({
|
||||||
|
where: { id: detailsId },
|
||||||
|
data: {
|
||||||
|
companyName: teamName,
|
||||||
|
companyFullName: `LLC ${teamName}`,
|
||||||
|
inn: '7700000000',
|
||||||
|
kpp: '770001001',
|
||||||
|
ogrn: '1027700000000',
|
||||||
|
address: 'Demo legal address, Moscow',
|
||||||
|
bankName: 'Demo Bank',
|
||||||
|
bik: '044525225',
|
||||||
|
correspondentAccount: '30101810400000000225',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
await prisma.kYCApplication.upsert({
|
||||||
|
where: { uuid: applicationUuid },
|
||||||
|
create: {
|
||||||
|
uuid: applicationUuid,
|
||||||
|
userId: logtoId,
|
||||||
|
teamName,
|
||||||
|
countryCode: 'RU',
|
||||||
|
workflowStatus: 'approved',
|
||||||
|
score: 92,
|
||||||
|
contactPerson: `${firstName} ${lastName}`,
|
||||||
|
contactEmail: email,
|
||||||
|
contactPhone: phone,
|
||||||
|
objectId: detailsId,
|
||||||
|
approvedBy: logtoId,
|
||||||
|
approvedAt: new Date(),
|
||||||
|
},
|
||||||
|
update: {
|
||||||
|
userId: logtoId,
|
||||||
|
teamName,
|
||||||
|
countryCode: 'RU',
|
||||||
|
workflowStatus: 'approved',
|
||||||
|
score: 92,
|
||||||
|
contactPerson: `${firstName} ${lastName}`,
|
||||||
|
contactEmail: email,
|
||||||
|
contactPhone: phone,
|
||||||
|
objectId: detailsId,
|
||||||
|
approvedBy: logtoId,
|
||||||
|
approvedAt: new Date(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
await prisma.kYCProfile.upsert({
|
||||||
|
where: { uuid: profileUuid },
|
||||||
|
create: {
|
||||||
|
uuid: profileUuid,
|
||||||
|
userId: logtoId,
|
||||||
|
teamName,
|
||||||
|
countryCode: 'RU',
|
||||||
|
workflowStatus: 'approved',
|
||||||
|
score: 92,
|
||||||
|
contactPerson: `${firstName} ${lastName}`,
|
||||||
|
contactEmail: email,
|
||||||
|
contactPhone: phone,
|
||||||
|
objectId: detailsId,
|
||||||
|
approvedBy: logtoId,
|
||||||
|
approvedAt: new Date(),
|
||||||
|
},
|
||||||
|
update: {
|
||||||
|
userId: logtoId,
|
||||||
|
teamName,
|
||||||
|
countryCode: 'RU',
|
||||||
|
workflowStatus: 'approved',
|
||||||
|
score: 92,
|
||||||
|
contactPerson: `${firstName} ${lastName}`,
|
||||||
|
contactEmail: email,
|
||||||
|
contactPhone: phone,
|
||||||
|
objectId: detailsId,
|
||||||
|
approvedBy: logtoId,
|
||||||
|
approvedAt: new Date(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
console.log(`Seeded KYC demo data for ${logtoId}: application ${applicationUuid}`)
|
||||||
|
|
||||||
|
await prisma.$disconnect()
|
||||||
Reference in New Issue
Block a user