Rename compose file to docker-compose.yml
This commit is contained in:
@@ -249,23 +249,68 @@ async function main() {
|
||||
});
|
||||
|
||||
const stages = ["Лид", "Уточнение", "Подбор решения", "Коммерческое предложение", "Переговоры", "Пилот", "Проверка договора"];
|
||||
await prisma.deal.createMany({
|
||||
data: contacts.map((c, idx) => ({
|
||||
for (const [idx, c] of contacts.entries()) {
|
||||
const nextStepText =
|
||||
idx % 4 === 0
|
||||
? "Отправить предложение по пилоту и зафиксировать список задач интеграции."
|
||||
: "Провести воркшоп по решению и согласовать сроки с коммерческим владельцем.";
|
||||
|
||||
const deal = await prisma.deal.create({
|
||||
data: {
|
||||
teamId: team.id,
|
||||
contactId: c.id,
|
||||
title: `${c.company ?? "Клиент"}: интеграция Odoo + AI`,
|
||||
stage: stages[idx % stages.length],
|
||||
amount: 18000 + (idx % 8) * 7000,
|
||||
nextStep:
|
||||
idx % 4 === 0
|
||||
? "Отправить предложение по пилоту и зафиксировать список задач интеграции."
|
||||
: "Провести воркшоп по решению и согласовать сроки с коммерческим владельцем.",
|
||||
nextStep: nextStepText,
|
||||
summary:
|
||||
"Потенциальная сделка на поэтапное внедрение Odoo с AI-копилотами для операций, продаж и планирования. " +
|
||||
"Коммерческая модель: уточнение + пилот + тиражирование.",
|
||||
})),
|
||||
},
|
||||
select: { id: true },
|
||||
});
|
||||
|
||||
const dueBase = atOffset((idx % 5) + 1, 11 + (idx % 4), 0);
|
||||
const steps = [
|
||||
{
|
||||
dealId: deal.id,
|
||||
title: "Собрать уточняющие требования",
|
||||
description: "Подтвердить модули Odoo, владельцев данных и критерии успеха.",
|
||||
status: "done",
|
||||
order: 1,
|
||||
completedAt: atOffset(-2 - (idx % 3), 16, 0),
|
||||
dueAt: atOffset(-1, 12, 0),
|
||||
},
|
||||
{
|
||||
dealId: deal.id,
|
||||
title: "Провести воркшоп по решению",
|
||||
description: "Согласовать границы интеграции и план пилота.",
|
||||
status: idx % 3 === 0 ? "in_progress" : "todo",
|
||||
order: 2,
|
||||
dueAt: dueBase,
|
||||
},
|
||||
{
|
||||
dealId: deal.id,
|
||||
title: "Согласовать и отправить договор",
|
||||
description: "Выслать договор и зафиксировать дату подписи.",
|
||||
status: "todo",
|
||||
order: 3,
|
||||
dueAt: atOffset((idx % 5) + 6, 15, 0),
|
||||
},
|
||||
];
|
||||
|
||||
await prisma.dealStep.createMany({ data: steps });
|
||||
const current = await prisma.dealStep.findFirst({
|
||||
where: { dealId: deal.id, status: { not: "done" } },
|
||||
orderBy: [{ order: "asc" }, { createdAt: "asc" }],
|
||||
select: { id: true },
|
||||
});
|
||||
await prisma.deal.update({
|
||||
where: { id: deal.id },
|
||||
data: { currentStepId: current?.id ?? null },
|
||||
});
|
||||
}
|
||||
|
||||
await prisma.contactPin.createMany({
|
||||
data: contacts.map((c, idx) => ({
|
||||
teamId: team.id,
|
||||
|
||||
Reference in New Issue
Block a user