Frappe v7.1.0 版本更新全解析:Gantt 视图、Web Form 增强与自动化报告实战指南

发布时间:2026/9/15 17:57:11
Frappe v7.1.0 版本更新全解析:Gantt 视图、Web Form 增强与自动化报告实战指南
Frappe v7.1.0 版本更新全解析Gantt 视图、Web Form 增强与自动化报告实战指南【免费下载链接】frappeLow code web framework for real world applications, in Python and Javascript项目地址: https://gitcode.com/GitHub_Trending/fr/frappe本篇文章基于 Frappe 框架仓库中的官方变更日志 v7_1_0.md系统梳理 v7.1.0 引入的 Gantt 视图、应用内帮助、Web Form 能力增强、自动邮件报告等核心功能并结合当前仓库中的实现源码如 gantt.py、auto_email_report.py、web_form.json深入剖析其工作原理。读完本文你将掌握这些功能的配置入口、字段含义与底层调用逻辑能够直接在实际项目中落地使用。一、Gantt 视图为日期范围型文档提供可视化调度功能概述v7.1.0 为包含日期范围开始日期 / 结束日期的文档新增了Gantt View甘特图视图。甘特图以横向时间条的形式展示任务的起止时间与重叠关系非常适合项目管理、排产计划、预约调度等场景。工作原理与源码佐证甘特图在前端展示条形的起止位置当用户拖动条形调整时间后后端通过白名单接口更新文档字段。核心实现位于 frappe/desk/gantt.pyfrappe.whitelist() def update_task(args: str | dict, field_map: str | dict): Updates Doc (called via gantt) based on passed field_map args frappe._dict(frappe.parse_json(args)) field_map frappe._dict(frappe.parse_json(field_map)) d frappe.get_doc(args.doctype, args.name) d.set(field_map.start, args.start) d.set(field_map.end, args.end) d.save()关键点解读前端把「当前拖动的文档」与「字段映射」以 JSON 传入args携带doctype、name、start、endfield_map指明起始字段名与结束字段名后端通过frappe.get_doc加载文档用d.set(...)写入新时间后d.save()持久化从而保持数据库与视图状态一致由此可知只要 DocType 中存在一对可用于起止的日期/时间字段即可接入该接口。使用建议为 DocType 定义start_date与end_date这类日期字段在视图层配置 Gantt 视图并按需声明field_map映射拖动甘特条后update_task会被触发实现所见即所得的日程调整。二、In-App Help应用内帮助搜索v7.1.0 引入了In-App Help应用内帮助用户无需离开系统直接点击界面上的 “Help” 即可搜索帮助内容。对开发者而言这意味着 Frappe 开始把文档/帮助系统内嵌到运行时环境中减少了用户切换上下文的时间成本。这一功能为后续版本中更完整的帮助中心与上下文感知文档体系奠定了基础。三、Web Form 增强从简单表单到完整业务入口v7.1.0 显著扩充了 Web Form网站表单的能力使其可以承载更复杂的业务场景支持 Grids子表/Child Table表单中可以内嵌可编辑的子表适合录入明细行数据如订单明细、多行联系方式支持 Page Breaks分页长表单可拆分为多页改善填写体验支持 Payment Gateway支付网关表单可直接挂接在线支付把「提交申请」升级为「提交并付款」支持附件上传Attachments允许访客随表单提交文件材料。配置字段源码视角从 frappe/website/doctype/web_form/web_form.json 可以看出Web Form 的字段模型已包含与上述能力配套的配置项例如web_form_fieldsTable 类型options: Web Form Field定义表单字段包括子表字段max_attachment_sizeInt 类型说明为 “Set size in MB”限制附件上传大小单位 MBshow_attachmentsCheck在表单中展示已上传附件allow_incompleteCheck允许在必填项未填全时保存配合分页长表单的逐步填写success_url/success_message提交后的跳转地址与成功提示button_label自定义提交按钮文案client_script/custom_css自定义前端脚本与样式可处理分页切换、字段联动等交互。前端渲染逻辑可继续查阅 frappe/public/js/frappe/web_form/web_form.js 与 frappe/website/web_form/init.py测试样例见 frappe/website/doctype/web_form/test_records.json。落地场景招聘/报名分页 附件 子表技能列表、经历明细在线订购子表录入明细 支付网关完成收款服务申请附件上传证明材料max_attachment_size控制上传上限。四、Auto Email Report自动化邮件报告功能概述v7.1.0 引入Auto Email Report自动邮件报告可让系统按每日 / 每周 / 每月频率自动将指定报表以邮件形式发送给目标用户无需人工手动导出发送。核心实现主控制器位于 frappe/email/doctype/auto_email_report/auto_email_report.pyDocType 定义见 auto_email_report.json测试用例见 test_auto_email_report.py。关键字段说明依据auto_email_report.py中的字段类型定义字段类型 / 可选值说明reportLink要发送的报表必填userLink报告归属用户email_toSmallText收件人列表支持多地址校验后以换行分隔frequencyDaily / Weekdays / Weekly / Monthly发送频率day_of_weekMonday~Sunday每周发送时的星期设置formatHTML / XLSX / CSV / PDF输出格式send_if_dataCheck仅当有数据时才发送空结果不发送dynamic_date_periodDaily / Weekly / Monthly / Quarterly / Half Yearly / Yearly动态时间窗口from_date_field/to_date_field字段名与动态周期配合自动写入起止过滤条件use_first_day_of_periodCheck是否取周期首日作为起始日期no_of_rowsInt报表行数上限默认 100senderLink发送邮箱账户Email Accountdata_modified_tillInt仅取最近 N 小时修改过的数据Report Builder 报表发送逻辑send()auto_email_report.py按格式生成内容——HTML 直接作为邮件正文XLSX / CSV / PDF 则作为附件文件名规则见get_file_name()形如Report-Name.xlsx最终通过frappe.sendmail发出并支持queue_separatelyTrue排队发送频率控制process_auto_email_report()中对Weekdays跳过周六周日、对Weekly校验day_of_weeksend_monthly()处理月度报告调度入口send_daily()将任务入队到long队列执行动态日期prepare_dynamic_filters()依据dynamic_date_period自动计算起止日期如 Quarterly 前移 3 个月、Yearly 前移 1 年并写入from_date_field/to_date_field对应的过滤条件手动触发白名单接口send_now(name)可立即发送、download(name)可本地下载报告文件数量限制每个用户最多 20 个启用中的自动邮件报告可通过 System Settings 的max_auto_email_report_per_user调整见validate_report_count()发送失败时通过log_error记录错误日志便于排查。配置步骤在 Desk 中新建Auto Email Report选择report并设置email_to、frequency、format若报表含必填过滤器需在filters中预先填好validate_mandatory_fields()会强制校验需要时间窗口时勾选动态周期并指定起止字段保存并启用等待调度器在对应时间点自动发送也可点击 “Send Now” 立即验证。五、其他重要修复与改进v7.1.0 还包含一系列平台级改进均可找到对应实现佐证登录弹窗通知Note勾选 Note 的 “Notify users with a popup when they log in” 后用户登录时会收到弹窗提醒。实现见 frappe/desk/doctype/note/note.pynotify_on_login开启时默认 7 天后过期expire_notification_on仅公开笔记可推送非公开自动关闭并通过Note Seen By子表与get_unseen_notes()记录已读状态、避免重复弹窗门户用户角色Portal Roles客户、供应商、学生等门户用户可以拥有角色且门户侧边栏按角色渲染并可在Portal Settings中配置备份数量限制可在 System Settings 中限制保留的备份数量防止磁盘被历史备份占满调度器日志改进Scheduler log 改为错误日志并以 MyISAM 存储降低日常日志写入对主表的开销自定义与邮件提醒导出提供了从Customize Form直接导出自定义项与 Email Alert 的更好方式方便迁移与备份数据导入工具邮件Data Import Tool 在适用场景下支持发送邮件便于导入结果通知Integration Broker引入集成代理为系统与外部服务的对接提供统一通道。六、升级与验证建议升级前请完整阅读 v7_1_0.md 并查看frappe/change_log/下相邻版本的变更评估破坏性改动升级后重点回归验证Gantt 视图拖动保存调用 gantt.py 的update_task、Web Form 子表与附件上传、Auto Email Report 的定时触发与附件格式可通过 test_auto_email_report.py 与 note.py 对应的测试文件快速验证相关模块行为。总结Frappe v7.1.0 是一次面向「可视化管理与自助化运营」的重要更新Gantt 视图让日期型数据可拖拽管理Web Form 的多能力扩展使外部表单能承载子表、分页、支付与附件Auto Email Report 将报表分发自动化配合登录弹窗、门户角色、备份限制等稳定性改进共同提升了 Frappe 在真实业务场景中的可用性。上述每一项功能在当前仓库源码中都有完整实现与测试支撑开发者可依据本文的字段说明与调用逻辑直接上手配置。【免费下载链接】frappeLow code web framework for real world applications, in Python and Javascript项目地址: https://gitcode.com/GitHub_Trending/fr/frappe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考