Files
2026-09-09 17:36:25 +08:00

53 lines
1.6 KiB
JavaScript

import { tool } from "langchain"
import lunarLib from "lunar-javascript"
const { Solar, HolidayUtil } = lunarLib
/**
* 年份节日列表工具
* 基于 lunar-javascript 计算全年节日(公历节日 + 农历传统节日)与法定节假日安排
*/
export const getYearHolidaysTool = tool(
async ({ year }) => {
try {
// 法定节假日安排(含调休补班)
const legal = HolidayUtil.getHolidays(year).map(h => ({
date: h.getTarget().toString(),
name: h.getName(),
type: h.isWork() ? "调休上班" : "放假"
}))
// 遍历全年日期,收集公历节日与农历传统节日(春节、中秋、端午等)
const festivals = []
const start = Solar.fromYmd(year, 1, 1)
const days = Solar.fromYmd(year + 1, 1, 1).subtract(start)
for (let i = 0; i < days; i++) {
const d = start.next(i)
const names = [...d.getFestivals(), ...d.getLunar().getFestivals()]
if (names.length) {
festivals.push({ date: d.toString(), name: names.join("、") })
}
}
return JSON.stringify({ year, legal, festivals }, null, 2)
} catch (error) {
return JSON.stringify({ error: error.message }, null, 2)
}
},
{
name: "get_year_holidays",
description: "查询给定年份节日所在日期列表,包括法定节假日安排(含调休)与传统节日",
schema: {
type: "object",
properties: {
year: {
type: "number",
description: "年份",
minimum: 1900,
maximum: 2100
}
},
required: ["year"]
}
}
)