59 lines
1.5 KiB
TypeScript
59 lines
1.5 KiB
TypeScript
#!/usr/bin/env tsx
|
|
|
|
import { prisma } from '@/lib/prisma'
|
|
import { oaBoardDingtalkTodoDispatchService } from '@/server/services/oa-board-dingtalk-todo-dispatch.service'
|
|
import { oaBrandPlanningShipmentTodoService } from '@/server/services/oa-brand-planning-shipment-todo.service'
|
|
|
|
function readArg(name: string) {
|
|
const index = process.argv.findIndex((arg) => arg === `--${name}`)
|
|
if (index < 0) return null
|
|
return process.argv[index + 1] ?? null
|
|
}
|
|
|
|
async function main() {
|
|
const openingCode = readArg('opening-code')?.trim() || undefined
|
|
const owner = readArg('owner')?.trim() || undefined
|
|
const approvalStage = readArg('approval-stage')?.trim() || undefined
|
|
|
|
const [overtime, shipmentReminder] = await Promise.all([
|
|
oaBoardDingtalkTodoDispatchService.syncDashboard({
|
|
approvalNumber: openingCode,
|
|
owner,
|
|
approvalStage,
|
|
}),
|
|
oaBrandPlanningShipmentTodoService.sync(),
|
|
])
|
|
|
|
console.log(
|
|
JSON.stringify(
|
|
{
|
|
ok: true,
|
|
summary: { overtime, shipmentReminder },
|
|
},
|
|
null,
|
|
2,
|
|
),
|
|
)
|
|
}
|
|
|
|
main()
|
|
.catch((error) => {
|
|
console.error(
|
|
JSON.stringify(
|
|
{
|
|
ok: false,
|
|
message: error instanceof Error ? error.message : '同步 OA 看板钉钉待办失败',
|
|
},
|
|
null,
|
|
2,
|
|
),
|
|
)
|
|
process.exitCode = 1
|
|
})
|
|
.finally(async () => {
|
|
await Promise.allSettled([
|
|
oaBoardDingtalkTodoDispatchService.dispose(),
|
|
prisma.$disconnect(),
|
|
])
|
|
})
|