Rename compose file to docker-compose.yml

This commit is contained in:
Ruslan Bakiev
2026-02-19 12:58:24 +07:00
parent 3ac487c25b
commit cd70c57a3b
4 changed files with 185 additions and 13 deletions

View File

@@ -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,