feat: 退休提醒功能 - 身份证提取出生日期、渐进式退休年龄计算、AI流式获取政策、用户确认生效
This commit is contained in:
@@ -233,3 +233,122 @@ ${orgContext}`
|
||||
if (delta) yield delta
|
||||
}
|
||||
}
|
||||
|
||||
export interface RetirementPolicyResult {
|
||||
content: string
|
||||
maleRetireAge: number
|
||||
femaleRetireAge: number
|
||||
femaleWorkerAge: number
|
||||
}
|
||||
|
||||
export async function fetchRetirementPolicy(): Promise<RetirementPolicyResult> {
|
||||
const today = new Date().toISOString().slice(0, 10)
|
||||
const prompt = `当前日期是${today}。请提供中国最新的法定退休年龄政策。
|
||||
|
||||
已知背景信息(请以此为准):
|
||||
- 2024年9月13日,全国人大常委会通过《关于实施渐进式延迟法定退休年龄的决定》,2025年1月1日起正式实施。
|
||||
- 渐进式延迟退休改革方案(15年过渡期,2025年1月1日至2039年12月31日):
|
||||
- 男性职工:从60岁逐步延迟到63岁,每4个月延迟1个月
|
||||
- 女性干部/管理岗:从55岁逐步延迟到58岁,每4个月延迟1个月
|
||||
- 女性工人/操作岗:从50岁逐步延迟到55岁,每2个月延迟1个月
|
||||
- 改革前基准:男60岁、女干部55岁、女工人50岁(1978年国发〔1978〕104号)
|
||||
|
||||
请根据当前日期${today},计算当前渐进式延迟退休已实施的进度,给出当前实际适用的法定退休年龄(精确到月)。
|
||||
|
||||
要求:
|
||||
1. 说明当前政策状态和已实施的延迟进度
|
||||
2. 给出截至当前日期,各类人员实际适用的法定退休年龄
|
||||
3. 在末尾用以下JSON格式输出结构化数据(用<JSON>和</JSON>标记包裹):
|
||||
<JSON>
|
||||
{
|
||||
"maleRetireAge": <计算后的男性退休年龄,如60.33表示60岁4个月>,
|
||||
"femaleRetireAge": <计算后的女性干部退休年龄>,
|
||||
"femaleWorkerAge": <计算后的女性工人退休年龄>
|
||||
}
|
||||
</JSON>
|
||||
其中:
|
||||
- maleRetireAge: 当前男性法定退休年龄(含渐进延迟,必须填入计算后的值,不要填基准60)
|
||||
- femaleRetireAge: 当前女性干部/管理岗法定退休年龄(必须填入计算后的值,不要填基准55)
|
||||
- femaleWorkerAge: 当前女性工人/操作岗法定退休年龄(必须填入计算后的值,不要填基准50)
|
||||
- 年龄用小数表示,整数部分为岁,小数部分为月/12,如60岁4个月=60.33,50岁8个月=50.67
|
||||
|
||||
请确保JSON中的数值与你在正文中计算出的退休年龄完全一致,不要使用改革前的基准值。`
|
||||
|
||||
const response = await client.chat.completions.create({
|
||||
model: 'qwen-plus',
|
||||
messages: [
|
||||
{ role: 'system', content: '你是劳动政策专家,精通中国退休政策法规。请提供准确的政策信息。' },
|
||||
{ role: 'user', content: prompt },
|
||||
],
|
||||
temperature: 0.3,
|
||||
max_tokens: 2000,
|
||||
})
|
||||
|
||||
const text = response.choices[0]?.message?.content || ''
|
||||
|
||||
let maleRetireAge = 60
|
||||
let femaleRetireAge = 55
|
||||
let femaleWorkerAge = 50
|
||||
|
||||
const jsonMatch = text.match(/<JSON>([\s\S]*?)<\/JSON>/)
|
||||
if (jsonMatch) {
|
||||
try {
|
||||
const parsed = JSON.parse(jsonMatch[1].trim())
|
||||
if (parsed.maleRetireAge) maleRetireAge = Number(parsed.maleRetireAge)
|
||||
if (parsed.femaleRetireAge) femaleRetireAge = Number(parsed.femaleRetireAge)
|
||||
if (parsed.femaleWorkerAge) femaleWorkerAge = Number(parsed.femaleWorkerAge)
|
||||
} catch {}
|
||||
}
|
||||
|
||||
return { content: text, maleRetireAge, femaleRetireAge, femaleWorkerAge }
|
||||
}
|
||||
|
||||
export async function* fetchRetirementPolicyStream(): AsyncGenerator<string> {
|
||||
const today = new Date().toISOString().slice(0, 10)
|
||||
const prompt = `当前日期是${today}。请提供中国最新的法定退休年龄政策。
|
||||
|
||||
已知背景信息(请以此为准):
|
||||
- 2024年9月13日,全国人大常委会通过《关于实施渐进式延迟法定退休年龄的决定》,2025年1月1日起正式实施。
|
||||
- 渐进式延迟退休改革方案(15年过渡期,2025年1月1日至2039年12月31日):
|
||||
- 男性职工:从60岁逐步延迟到63岁,每4个月延迟1个月
|
||||
- 女性干部/管理岗:从55岁逐步延迟到58岁,每4个月延迟1个月
|
||||
- 女性工人/操作岗:从50岁逐步延迟到55岁,每2个月延迟1个月
|
||||
- 改革前基准:男60岁、女干部55岁、女工人50岁(1978年国发〔1978〕104号)
|
||||
|
||||
请根据当前日期${today},计算当前渐进式延迟退休已实施的进度,给出当前实际适用的法定退休年龄(精确到月)。
|
||||
|
||||
要求:
|
||||
1. 说明当前政策状态和已实施的延迟进度
|
||||
2. 给出截至当前日期,各类人员实际适用的法定退休年龄
|
||||
3. 在末尾用以下JSON格式输出结构化数据(用<JSON>和</JSON>标记包裹):
|
||||
<JSON>
|
||||
{
|
||||
"maleRetireAge": <计算后的男性退休年龄,如60.33表示60岁4个月>,
|
||||
"femaleRetireAge": <计算后的女性干部退休年龄>,
|
||||
"femaleWorkerAge": <计算后的女性工人退休年龄>
|
||||
}
|
||||
</JSON>
|
||||
其中:
|
||||
- maleRetireAge: 当前男性法定退休年龄(含渐进延迟,必须填入计算后的值,不要填基准60)
|
||||
- femaleRetireAge: 当前女性干部/管理岗法定退休年龄(必须填入计算后的值,不要填基准55)
|
||||
- femaleWorkerAge: 当前女性工人/操作岗法定退休年龄(必须填入计算后的值,不要填基准50)
|
||||
- 年龄用小数表示,整数部分为岁,小数部分为月/12,如60岁4个月=60.33,50岁8个月=50.67
|
||||
|
||||
请确保JSON中的数值与你在正文中计算出的退休年龄完全一致,不要使用改革前的基准值。`
|
||||
|
||||
const stream = await client.chat.completions.create({
|
||||
model: 'qwen-plus',
|
||||
messages: [
|
||||
{ role: 'system', content: '你是劳动政策专家,精通中国退休政策法规。请提供准确的政策信息。' },
|
||||
{ role: 'user', content: prompt },
|
||||
],
|
||||
temperature: 0.3,
|
||||
max_tokens: 2000,
|
||||
stream: true,
|
||||
})
|
||||
|
||||
for await (const chunk of stream) {
|
||||
const delta = chunk.choices[0]?.delta?.content
|
||||
if (delta) yield delta
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user