feat: AI判赔预测表单UI优化 - 卡片布局/左右分栏/Word导出
- 结构化判赔预测表单改为卡片式布局(员工信息/争议事实/制度合规) - 左右分栏:左栏表单(2/5),右栏AI结果(3/5),结果区固定高度可滚动 - 系统带出字段用Database图标替代文字标注 - 移除违纪记录摘要重复内容 - 三期信息整合到员工信息卡片内 - 新增AI分析结果导出Word文档功能(docx库) - 后端roster API返回三期字段,修复特殊状态拼接逻辑 - 修复markdown渲染样式冲突(移除index.css中h1/h2/h3覆盖)
This commit is contained in:
@@ -224,7 +224,120 @@ ${orgContext}`
|
||||
{ role: 'user', content: prompt },
|
||||
],
|
||||
temperature: 0.5,
|
||||
max_tokens: 2000,
|
||||
max_tokens: 8000,
|
||||
stream: true,
|
||||
})
|
||||
|
||||
for await (const chunk of stream) {
|
||||
const delta = chunk.choices[0]?.delta?.content
|
||||
if (delta) yield delta
|
||||
}
|
||||
}
|
||||
|
||||
/** 12 类争议场景中文映射 */
|
||||
const SCENARIO_LABELS: Record<string, string> = {
|
||||
discipline: '违纪解除',
|
||||
incompetence: '不胜任解除',
|
||||
probation: '试用期解除',
|
||||
layoff: '经济性裁员',
|
||||
expiry: '合同到期不续签',
|
||||
negotiated: '协商解除',
|
||||
transfer: '调岗调薪争议',
|
||||
overtime: '加班费争议',
|
||||
injury: '工伤待遇争议',
|
||||
noncompete: '竞业限制争议',
|
||||
confidentiality: '保密协议争议',
|
||||
social_insurance: '社保公积金争议',
|
||||
}
|
||||
|
||||
/**
|
||||
* 结构化判赔预测流式输出
|
||||
* @param scenarioType 争议场景类型
|
||||
* @param keyFacts HR 填写的关键事实
|
||||
* @param orgContext 企业上下文(员工信息等)
|
||||
*/
|
||||
export async function* predictStructuredStream(
|
||||
scenarioType: string,
|
||||
keyFacts: {
|
||||
employeeName?: string
|
||||
violationFact?: string
|
||||
region?: string
|
||||
monthlySalary?: string
|
||||
democracyStatus?: string
|
||||
disciplinaryRecord?: string
|
||||
extraInfo?: string
|
||||
},
|
||||
orgContext: string,
|
||||
) {
|
||||
const scenarioLabel = SCENARIO_LABELS[scenarioType] || scenarioType
|
||||
|
||||
const factsText = [
|
||||
keyFacts.employeeName ? `- 涉及员工:${keyFacts.employeeName}` : '',
|
||||
keyFacts.violationFact ? `- 违纪/争议事实:${keyFacts.violationFact}` : '',
|
||||
keyFacts.region ? `- 所在地区:${keyFacts.region}` : '',
|
||||
keyFacts.monthlySalary ? `- 员工月薪:${keyFacts.monthlySalary} 元` : '',
|
||||
keyFacts.democracyStatus ? `- 制度民主公示状态:${keyFacts.democracyStatus}` : '',
|
||||
keyFacts.disciplinaryRecord ? `- 违纪记录留痕情况:${keyFacts.disciplinaryRecord}` : '',
|
||||
keyFacts.extraInfo ? `- 补充信息:${keyFacts.extraInfo}` : '',
|
||||
].filter(Boolean).join('\n')
|
||||
|
||||
const prompt = `你是一位资深劳动法律师,请基于以下争议场景和企业数据,进行专业的判赔风险分析。
|
||||
|
||||
## 争议场景
|
||||
${scenarioLabel}
|
||||
|
||||
## 关键事实(由 HR 提供)
|
||||
${factsText}
|
||||
|
||||
## 企业数据
|
||||
${orgContext}
|
||||
|
||||
请使用 Markdown 格式输出,包含以下部分:
|
||||
|
||||
## 风险分析
|
||||
|
||||
分析企业在当前场景下的主要法律风险点,引用具体法律条文。
|
||||
|
||||
## 预估赔偿范围
|
||||
|
||||
根据员工月薪、工龄、地区裁判口径,给出经济补偿/赔偿金的预估范围(注意:此为参考值,实际以仲裁裁决为准):
|
||||
|
||||
| 项目 | 金额范围(元) | 计算依据 |
|
||||
|------|--------------|----------|
|
||||
|
||||
## 建议方案
|
||||
|
||||
给出 2-3 个可行方案,按推荐度排序:
|
||||
|
||||
### 方案一(推荐)
|
||||
- **操作步骤**:...
|
||||
- **预估成本**:...
|
||||
- **风险等级**:低/中/高
|
||||
- **法律依据**:...
|
||||
|
||||
### 方案二
|
||||
- **操作步骤**:...
|
||||
- **预估成本**:...
|
||||
- **风险等级**:低/中/高
|
||||
- **法律依据**:...
|
||||
|
||||
## 关键注意事项
|
||||
|
||||
列出操作中必须注意的法律细节和证据要求。
|
||||
|
||||
> ⚠️ 以上分析基于当前提供的信息,仅供参考。实际仲裁结果受具体事实、证据、地区裁判口径等因素影响,建议在操作前咨询专业律师。`
|
||||
|
||||
const stream = await client.chat.completions.create({
|
||||
model: 'qwen-plus',
|
||||
messages: [
|
||||
{
|
||||
role: 'system',
|
||||
content: '你是劳动用工法律风险评估专家,精通中国劳动法、劳动合同法及相关司法解释。请基于企业提供的事实和数据,给出专业、客观的风险分析和方案建议。请使用 Markdown 格式输出,善用表格、加粗、列表等格式。所有金额预估必须注明"仅供参考"。',
|
||||
},
|
||||
{ role: 'user', content: prompt },
|
||||
],
|
||||
temperature: 0.5,
|
||||
max_tokens: 8000,
|
||||
stream: true,
|
||||
})
|
||||
|
||||
|
||||
@@ -141,6 +141,7 @@ export async function getEmployees(orgId: string, params: { page?: number; pageS
|
||||
isPregnant: emp.isPregnant,
|
||||
isInMedicalPeriod: emp.isInMedicalPeriod,
|
||||
isWorkInjured: emp.isWorkInjured,
|
||||
city: emp.city,
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user