feat: 退休提醒功能 - 身份证提取出生日期、渐进式退休年龄计算、AI流式获取政策、用户确认生效

This commit is contained in:
freedakgmail
2026-07-25 01:21:07 +08:00
parent 169a0e1117
commit b892df1d52
10 changed files with 659 additions and 5 deletions
+119
View File
@@ -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年国发〔1978104号)
请根据当前日期${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.3350岁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年国发〔1978104号)
请根据当前日期${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.3350岁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
}
}