feat(freelance,itops): P1-P4 智能业务引擎 + PDF 模板
freelance (P1+P3): - settings: 7 配置项 (公司/财务/提醒) - trigger_events: 5 个触发事件 (商机/合同/发票/任务/支出) - cascade: 5 处级联过滤 (合同→商机/报价, 发票→项目/合同, 工时→任务) - visible_when: 4 处条件显示 (收款日期/已付金额/实际工时/总金额) - validation: 2 处校验 (手机号/邮箱) - templates: 3 个 PDF 模板 (报价单/发票/合同) itops (P2+P4): - settings: 4 配置项 (SLA/提醒) - trigger_events: 4 个触发事件 (工单/合同/巡检) - cascade: 2 处级联过滤 (工单→合同, 巡检记录→合同) - visible_when: 6 处条件显示 (解决方案/响应时间/解决时间/关闭时间/问题/措施) - validation: 1 处校验 (合同编号格式) - templates: 1 个 PDF 模板 (维保合同)
This commit is contained in:
@@ -76,6 +76,7 @@ display_name = "维保合同"
|
||||
required = true
|
||||
display_name = "合同编号"
|
||||
unique = true
|
||||
validation = { pattern = "^SC-\\d{4}-\\d{4}$", message = "格式:SC-YYYY-NNNN" }
|
||||
|
||||
[[schema.entities.fields]]
|
||||
name = "name"
|
||||
@@ -190,6 +191,8 @@ display_name = "工单"
|
||||
ref_entity = "service_contract"
|
||||
ref_label_field = "name"
|
||||
ref_search_fields = ["name"]
|
||||
cascade_from = "client_id"
|
||||
cascade_filter = "client_id"
|
||||
|
||||
[[schema.entities.fields]]
|
||||
name = "client_id"
|
||||
@@ -279,21 +282,25 @@ display_name = "工单"
|
||||
field_type = "string"
|
||||
display_name = "解决方案"
|
||||
ui_widget = "textarea"
|
||||
visible_when = "status == 'resolved' || status == 'closed'"
|
||||
|
||||
[[schema.entities.fields]]
|
||||
name = "responded_at"
|
||||
field_type = "date_time"
|
||||
display_name = "首次响应时间"
|
||||
visible_when = "status != 'open'"
|
||||
|
||||
[[schema.entities.fields]]
|
||||
name = "resolved_at"
|
||||
field_type = "date_time"
|
||||
display_name = "解决时间"
|
||||
visible_when = "status == 'resolved' || status == 'closed'"
|
||||
|
||||
[[schema.entities.fields]]
|
||||
name = "closed_at"
|
||||
field_type = "date_time"
|
||||
display_name = "关闭时间"
|
||||
visible_when = "status == 'closed'"
|
||||
|
||||
# ── 3.3.3 check_plan(巡检计划)──
|
||||
|
||||
@@ -399,6 +406,8 @@ display_name = "巡检记录"
|
||||
field_type = "uuid"
|
||||
display_name = "维保合同"
|
||||
ref_entity = "service_contract"
|
||||
cascade_from = "plan_id"
|
||||
cascade_filter = "contract_id"
|
||||
|
||||
[[schema.entities.fields]]
|
||||
name = "client_id"
|
||||
@@ -439,12 +448,14 @@ display_name = "巡检记录"
|
||||
field_type = "string"
|
||||
display_name = "发现的问题"
|
||||
ui_widget = "textarea"
|
||||
visible_when = "result == 'abnormal'"
|
||||
|
||||
[[schema.entities.fields]]
|
||||
name = "actions_taken"
|
||||
field_type = "string"
|
||||
display_name = "采取措施"
|
||||
ui_widget = "textarea"
|
||||
visible_when = "result == 'abnormal'"
|
||||
|
||||
[[schema.entities.fields]]
|
||||
name = "notes"
|
||||
@@ -452,6 +463,70 @@ display_name = "巡检记录"
|
||||
display_name = "备注"
|
||||
ui_widget = "textarea"
|
||||
|
||||
# ── 插件配置 ──
|
||||
|
||||
[settings]
|
||||
|
||||
[[settings.fields]]
|
||||
name = "default_sla_response"
|
||||
display_name = "默认SLA响应时间(小时)"
|
||||
field_type = "number"
|
||||
default_value = 8
|
||||
range = [1.0, 72.0]
|
||||
group = "SLA"
|
||||
|
||||
[[settings.fields]]
|
||||
name = "default_sla_resolve"
|
||||
display_name = "默认SLA解决时间(小时)"
|
||||
field_type = "number"
|
||||
default_value = 48
|
||||
range = [1.0, 168.0]
|
||||
group = "SLA"
|
||||
|
||||
[[settings.fields]]
|
||||
name = "notify_sla_breach"
|
||||
display_name = "SLA超标提醒"
|
||||
field_type = "boolean"
|
||||
default_value = true
|
||||
group = "提醒"
|
||||
|
||||
[[settings.fields]]
|
||||
name = "notify_check_due"
|
||||
display_name = "巡检到期提醒"
|
||||
field_type = "boolean"
|
||||
default_value = true
|
||||
group = "提醒"
|
||||
|
||||
# ── 触发事件 ──
|
||||
|
||||
[[trigger_events]]
|
||||
name = "ticket_created"
|
||||
display_name = "新工单"
|
||||
description = "创建工单时开始SLA计时并通知"
|
||||
entity = "ticket"
|
||||
on = "create"
|
||||
|
||||
[[trigger_events]]
|
||||
name = "ticket_status_changed"
|
||||
display_name = "工单状态变更"
|
||||
description = "工单状态变化时检查SLA是否达标"
|
||||
entity = "ticket"
|
||||
on = "update"
|
||||
|
||||
[[trigger_events]]
|
||||
name = "contract_status_changed"
|
||||
display_name = "维保合同状态变更"
|
||||
description = "合同状态变化时检查到期预警"
|
||||
entity = "service_contract"
|
||||
on = "update"
|
||||
|
||||
[[trigger_events]]
|
||||
name = "check_plan_updated"
|
||||
display_name = "巡检计划更新"
|
||||
description = "巡检计划更新时检查下次巡检日期"
|
||||
entity = "check_plan"
|
||||
on = "update"
|
||||
|
||||
# ── 编号规则 ──
|
||||
|
||||
[[numbering]]
|
||||
@@ -461,6 +536,14 @@ prefix = "SC"
|
||||
format = "{PREFIX}-{YEAR}-{SEQ}"
|
||||
seq_length = 4
|
||||
|
||||
# ── 打印模板 ──
|
||||
|
||||
[[templates]]
|
||||
name = "service_contract_pdf"
|
||||
display_name = "维保合同"
|
||||
entity = "service_contract"
|
||||
format = "pdf"
|
||||
|
||||
# ── 页面设计 ──
|
||||
|
||||
# 页面 1:合同管理 + 详情
|
||||
|
||||
Reference in New Issue
Block a user