视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
enforcement-action-analysis-amir-fadavi【文档与办公】分析任何 OFAC 或 OFSI 执法行动——经 URL、粘贴文本或上传文档——并将结构化根本原因分析生成为格式化 Excel(.xlsx)电子表格。当用户指名、链接、粘贴或上传 OFAC 或 OFSI 执法行动,并请求以下任何内容时使用本技能:根本原因分析、合规差距、出了什么问题、经验教训、组织自我评估或补救规划。当用户询问“analyze this enforcement action”“what were the root causes”“turn this into a checklist”或“how do I make sure this doesn't happen to us”时也触发。输出单工作表 .xlsx 表格,六列:根本原因 | 出了什么问题 | 问题如何发生 | 什么本可…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
将任何 OFAC 或 OFSI 执法行动的结构化根本原因分析生成为格式化 Excel 电子表格。输出为六列表格,设计用作金融机构和非金融公司的合规官、企业内部律师、外部律师和顾问的工作文档。
用户将以三种方式之一提供执法行动:
/mnt/user-data/uploads/ 读取若均未提供,请用户提供执法行动后再继续。
在识别根本原因之前,从执法行动中提取以下内容:
用这些内容命名输出文件并填充工作表标题单元格。
通读完整执法行动——尤其是明显违规描述、加重因素和合规考量章节。这些是根本原因的主要素材。
识别所有不同的根本原因。根本原因是离散的合规失败——政策、流程、培训、技术或判断上的缺口——导致违规发生。不要为保持表格简短而合并无关的失败。典型执法行动产出 2–5 个根本原因;复杂案件(如大宗商品交易、多方规避计划)可能更多。
对每个根本原因,起草三部分内容:
1–3 句,描述该案例中发生的具体失败。基于事实、以执法行动文本为依据。不使用泛化合规语言。
1–3 句,解释潜在的合规失败机制——为何组织的计划未捕捉到这一点。取材自:
2–4 句,描述本可预防或检测违规的具体控制措施。针对案件事实具体化。始终反映 OFAC 的合规考量章节——这些是监管机构自身的明示期望,不可遗漏。
源自 OFAC 合规框架附录。识别根本原因时用作检查清单:
使用 openpyxl(Python)。不得使用任何其他库创建文件。
Root Causes of Apparent Violations — [Subject] ([Regulator], [Date])| 列 | 标题 | 宽度(字符) |
|---|---|---|
| A | Root Cause(根本原因) | 22 |
| B | What Went Wrong(出了什么问题) | 38 |
| C | How It Went Wrong(问题如何发生) | 42 |
| D | What Could Have Stopped It(什么本可阻止它) | 46 |
| E | Is my organization immune to this?(我的组织对此免疫吗?) | 22 |
| F | Notes(备注) | 28 |
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter
NAVY = "1B3A6B"
STEEL = "A8C4E0"
LIGHT = "EEF2F9"
WHITE = "FFFFFF"
INK = "1A1A2E"
GREY = "D0D8E4"
thin = Side(style='thin', color=GREY)
border = Border(left=thin, right=thin, top=thin, bottom=thin)
wrap = Alignment(wrap_text=True, vertical='top')
center_wrap = Alignment(wrap_text=True, vertical='center', horizontal='center')
标题行(第 1 行,合并 A1:F1):
WHITENAVY表头行(第 2 行):
WHITENAVYGREY数据行(第 3 行起):
NAVY,填充 LIGHT,边框,左上自动换行INK,填充 WHITE,边框,左上自动换行INK,填充 WHITE,边框,居中对齐——值:☐ Yes / ☐ No / ☐ PartialINK,填充 WHITE,边框,左上自动换行——空sheet.row_dimensions[r].height列 A 标签格式: RC[N]: [Short Title]——如 RC1: SDN-Only Screening
/mnt/user-data/outputs/[SubjectName]_OFAC_RootCause_Analysis.xlsx
使用下划线,不用空格。净化特殊字符。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter
import math
wb = Workbook()
ws = wb.active
ws.title = "Root Cause Analysis"
NAVY, LIGHT, WHITE, INK, GREY = "1B3A6B", "EEF2F9", "FFFFFF", "1A1A2E", "D0D8E4"
thin = Side(style='thin', color=GREY)
border = Border(left=thin, right=thin, top=thin, bottom=thin)
wrap = Alignment(wrap_text=True, vertical='top')
cwrap = Alignment(wrap_text=True, vertical='center', horizontal='center')
col_widths = [22, 38, 42, 46, 22, 28]
headers = ["Root Cause", "What Went Wrong", "How It Went Wrong",
"What Could Have Stopped It", "Is my organization immune to this?", "Notes"]
# Title row
ws.merge_cells("A1:F1")
t = ws["A1"]
t.value = "Root Causes of Apparent Violations — [Subject] ([Regulator], [Date])"
t.font = Font(name="Arial", size=14, bold=True, color=WHITE)
t.fill = PatternFill("solid", fgColor=NAVY)
t.alignment = Alignment(horizontal='left', vertical='center')
ws.row_dimensions[1].height = 30
# Header row
for i, h in enumerate(headers, 1):
c = ws.cell(row=2, column=i, value=h)
c.font = Font(name="Arial", size=11, bold=True, color=WHITE)
c.fill = PatternFill("solid", fgColor=NAVY)
c.alignment = cwrap
c.border = border
ws.row_dimensions[2].height = 30
# Column widths
for i, w in enumerate(col_widths, 1):
ws.column_dimensions[get_column_letter(i)].width = w
# rows = list of (rc_label, what_went_wrong, how_it_went_wrong, what_could_have_stopped)
rows = [] # populated from analysis
for r, (rc, ww, hw, stop) in enumerate(rows, start=3):
data = [rc, ww, hw, stop, "☐ Yes / ☐ No / ☐ Partial", ""]
max_lines = 1
for i, val in enumerate(data, 1):
c = ws.cell(row=r, column=i, value=val)
c.border = border
c.font = Font(name="Arial", size=10, bold=(i == 1),
color=NAVY if i == 1 else INK)
c.fill = PatternFill("solid", fgColor=LIGHT if i == 1 else WHITE)
c.alignment = cwrap if i == 5 else wrap
if val and i < 5:
lines = math.ceil(len(str(val)) / col_widths[i-1]) + str(val).count('\n')
max_lines = max(max_lines, lines)
ws.row_dimensions[r].height = max(60, max_lines * 15)
wb.save("/mnt/user-data/outputs/[Filename].xlsx")
print("Done.")
以输出路径调用 present_files。一行背景说明即可(如“FTI 案件有四个根本原因——可下载。”)。
RC[N]: [Short Title] 格式Root Causes of Apparent Violations — [Subject] ([Regulator], [Date])/mnt/user-data/outputs/ 并经 present_files 呈现