- 新增数字员工财务报告生成、邮件投递与渲染调度器 - 引入员工画像扫描调度与定时提醒任务 - 完善财务看板快照、排行口径与部门人员占比计算 - 优化数字员工工作看板仪表盘与技能目录 - 增强前端总览页图表、工作台摘要与顶部导航栏交互 - 新增差旅申请规划推动提醒与报销创建会话状态管理 - 补充财务报告、看板调度、数字员工工作记录测试覆盖
8.7 KiB
8.7 KiB
数字员工财务经验沉淀与定时提醒概念文档
更新日期:2026-06-02
功能一句话
把数字员工定位为后台财务数据分析员:定时沉淀企业财务经验,周期性生成分析报告,并在审批、预算、出差申请和报销流程中生成可追踪的提醒建议。
背景与问题
当前数字员工已经具备技能目录、财务看板快照和员工行为画像扫描能力,但业务价值仍偏弱:
- 技能列表数量多,但多数只是能力定义,缺少持续沉淀和行动产出。
- 员工画像已有数据,但如果不持续沉淀,系统不会随企业数据变多而变聪明。
- 财务流程中存在大量需要定时推动的事项,例如领导审批、预算编制、出差申请到期、报销补材料和归档。
- 现在缺少统一的后台提醒扫描结果,无法证明数字员工每天发现了哪些待处理事项、提醒了谁、为什么提醒。
因此本功能把数字员工拆成三条主线:
- 行为沉淀技能:每天小颗粒沉淀费用、预算、单据、流程、画像经验。
- 定时提醒技能:按时间窗口扫描待办事项,生成面向责任人的提醒清单。
- 周期报告技能:读取沉淀结果和提醒效果,形成企业财务经验报告。
目标与非目标
目标
- 建立数字员工“后台分析员”定位,不再把全部技能包装成前台执行能力。
- 收敛技能体系为行为沉淀、定时提醒、周期报告三类。
- 第一阶段落地一个真实可运行的 定时提醒扫描任务。
- 提醒扫描使用现有业务数据,不新增数据库结构,结果写入
agent_runs和agent_tool_calls。 - 提醒扫描至少覆盖:
- 待审批单据提醒。
- 预算编制/预算缺口提醒。
- 出差申请到期后待报销提醒。
- 报销逾期、补材料、付款/归档提醒。
- 数字员工看板能够看到提醒扫描的运行记录和提醒产出数量。
非目标
- 第一阶段不做站内信、邮件、短信或企业微信真实投递。
- 第一阶段不新增提醒表、已读表、重复提醒去重表等数据库结构。
- 第一阶段不替代审批、付款、预算编制和报销操作,只生成提醒建议。
- 第一阶段不让数字员工自动修改单据状态、预算状态或审批结果。
- 第一阶段不做完整报告页面,只把提醒报告结构化写入运行记录。
用户与场景
- 部门领导:每天收到待审批单据汇总,知道待审数量、最高金额、最长等待时间。
- 预算管理员:在预算周期临近或预算池缺失时收到编制/补齐提醒。
- 出差员工:出差申请结束后未报销时收到报销或延长申请提醒。
- 财务人员:看到报销逾期、补材料、付款、归档等流程卡点。
- 财务负责人:周期性查看提醒扫描报告,判断哪些流程经常阻塞。
- 系统管理员:在数字员工看板查看提醒任务是否稳定运行。
功能能力
行为沉淀技能
后续应逐步沉淀以下经验快照:
- 费用结构基线:部门、费用类型、月份、单数、金额、均值、P90。
- 预算执行偏差:使用率、闲置率、超支风险、预测偏差。
- 报销行为画像:员工/部门报销频率、金额区间、退回率、补材料率。
- 单据质量经验:缺附件、发票异常、金额不一致、退回原因。
- 流程效率经验:提交到审批、审批到付款、付款到归档的耗时。
- 制度执行经验:制度条款命中频率、人工否定频率、制度缺口。
定时提醒技能
第一阶段实现 digital_employee_reminder_scan,生成统一提醒报告:
approval_pending:待审批提醒。budget_compilation:预算编制/预算池缺口提醒。travel_application_expiry:出差申请已结束但未报销提醒。reimbursement_overdue:报销逾期、补材料、待付款、待归档提醒。
提醒报告只写入数字员工运行记录,结构包含:
- 扫描时间和窗口。
- 每类提醒数量。
- 每个收件人的提醒摘要。
- 关联单据、金额、最长等待时间、建议动作。
- 是否需要人工处理。
周期报告技能
后续在沉淀和提醒任务稳定后生成:
- 每日财务经营摘要。
- 周度流程效率复盘。
- 月度预算执行复盘。
- 半年度企业财务经验报告。
方案设计
后端
第一阶段新增三个后端模块:
digital_employee_reminder_task.py:执行提醒扫描,写入AgentRun。digital_employee_reminder_scheduler.py:后台调度器,默认每天 02:00 扫描,可配置首次延迟用于开发验证。digital_employee_dashboard.py:扩展任务类型和指标,让看板统计提醒产出。
提醒扫描复用现有表:
expense_claims:报销单和费用申请单。employees:员工、直属领导、角色。budget_allocations:预算池。agent_runs/agent_tool_calls:数字员工运行记录。
数据输出结构
运行记录中的 route_json.report 使用如下结构:
{
"title": "数字员工定时提醒扫描报告",
"generatedAt": "2026-06-02T02:00:00+08:00",
"windowDays": 14,
"totals": {
"recipientCount": 8,
"reminderCount": 23,
"approvalPendingCount": 7,
"budgetReminderCount": 4,
"travelApplicationReminderCount": 5,
"reimbursementOverdueCount": 7
},
"recipients": [
{
"recipientId": "emp-001",
"recipientName": "张三",
"recipientRole": "manager",
"reminders": [
{
"type": "approval_pending",
"priority": "high",
"title": "你有 3 笔报销单待审批",
"action": "请在今日处理审批待办",
"relatedDocuments": []
}
]
}
]
}
前端
第一阶段不新增独立页面。数字员工看板通过已有最近运行记录展示:
- 任务名称:定时提醒扫描。
- 产出数量:提醒数量。
- 最近摘要:提醒了多少人、多少条事项。
后续可在数字员工工作记录详情中扩展“提醒报告详情”。
算法与公式
提醒优先级
提醒优先级由等待天数、金额和业务类型决定:
priority\_score = 0.45 \times wait\_score + 0.35 \times amount\_score + 0.20 \times type\_score
其中:
wait_score = min(wait_days / threshold_days, 1)amount_score = min(amount / high_amount_threshold, 1)type_score:审批、预算、出差、报销流程分别给定基础分。
优先级映射:
priority =
\begin{cases}
high, & priority\_score \ge 0.75 \\
medium, & 0.45 \le priority\_score < 0.75 \\
low, & priority\_score < 0.45
\end{cases}
待审批等待天数
wait\_days = floor((now - submitted\_at) / 86400)
如果 submitted_at 为空,则使用 updated_at 或 created_at 降级计算。
预算缺口识别
当前阶段使用预算池存在性和周期作为提醒依据:
budget\_gap = active\_allocation\_count = 0
当当前年度/期间没有有效预算池,或预算池处于非 active/published 状态时,生成预算编制提醒。
测试方案
- 后端单元测试:构造员工、领导、报销单、申请单和预算池,验证提醒报告数量与收件人。
- 看板聚合测试:构造
digital_employee_reminder_scan运行记录,验证reminders指标被统计。 - 调度器测试:验证 scheduler 能调用任务服务,不重复启动。
- 容器验证:在
x-financial-main:/app内运行定向 pytest,60s 超时。 - 运行时验证:重启容器后查询
agent_runs,确认提醒扫描记录成功生成。 - HTTP 验证:调用
/api/v1/analytics/digital-employee-dashboard,确认任务分布包含定时提醒扫描。
指标与验收
agent_runs中出现task_type=digital_employee_reminder_scan的成功运行。- 工具响应包含
recipient_count、reminder_count和四类提醒计数。 - 数字员工看板
businessOutputs计入提醒数量。 - 最近运行记录展示“定时提醒扫描”。
- 定向测试通过。
- 不新增数据库结构,不改变现有单据状态。
风险与开放问题
- 第一阶段只生成提醒报告,不做真实消息投递;后续需要站内信/邮件/企业微信时再新增消息模型。
- 当前预算编制状态模型还不完整,第一阶段只能基于预算池缺口和期间判断。
- 出差申请到期依赖申请单中的
application_detail.time,如果历史数据缺失,只能降级使用occurred_at。 - 审批责任人目前主要通过员工直属领导推断,复杂动态审批流需要后续对接审批路由结果。
- 如果后续需要“已读/已处理/重复提醒抑制”,必须新增提醒表或消息表,并进行数据库迁移确认。