From 6307fc62505e36856c35c7b98095668cb4788e65 Mon Sep 17 00:00:00 2001 From: karuo Date: Sat, 7 Mar 2026 13:59:21 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=84=20=E5=8D=A1=E8=8B=A5AI=20=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=202026-03-07=2013:59=20|=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=EF=BC=9A=E6=B0=B4=E6=A1=A5=E5=B9=B3=E5=8F=B0=E5=AF=B9=E6=8E=A5?= =?UTF-8?q?=E3=80=81=E5=8D=A1=E6=9C=A8=E3=80=81=E8=BF=90=E8=90=A5=E4=B8=AD?= =?UTF-8?q?=E6=9E=A2=E5=B7=A5=E4=BD=9C=E5=8F=B0=20|=20=E6=8E=92=E9=99=A4?= =?UTF-8?q?=20>20MB:=2011=20=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../飞书管理/脚本/.feishu_tokens.json | 4 +- .../飞书管理/脚本/soul_party_to_feishu_sheet.py | 16 +++--- .../PPT制作/脚本/天恩Word演讲PPT_12页.py | 52 +++++++++++-------- 运营中枢/工作台/gitea_push_log.md | 1 + 运营中枢/工作台/代码管理.md | 1 + 5 files changed, 44 insertions(+), 30 deletions(-) diff --git a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/.feishu_tokens.json b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/.feishu_tokens.json index d16082ad..8044632f 100644 --- a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/.feishu_tokens.json +++ b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/.feishu_tokens.json @@ -1,6 +1,6 @@ { - "access_token": "u-cnjmrrVOtexVZCoFsmC1PClh16FxghihMwGaYQg026hY", - "refresh_token": "ur-dqg0nIGcJ9XGpxXYACGbmXlh34x1ghOPhwGaZA4023gI", + "access_token": "u-dZ4TwealBfGHhTqZmvw2tjlh143xghWpN0GaFQk026kF", + "refresh_token": "ur-c9yS96TNR75rI8FLTUzhmwlh1I31ghOPMMGaJB4027lF", "name": "飞书用户", "auth_time": "2026-03-06T13:09:11.605836" } \ No newline at end of file diff --git a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/soul_party_to_feishu_sheet.py b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/soul_party_to_feishu_sheet.py index 6a4aeaa8..d36bad21 100644 --- a/02_卡人(水)/水桥_平台对接/飞书管理/脚本/soul_party_to_feishu_sheet.py +++ b/02_卡人(水)/水桥_平台对接/飞书管理/脚本/soul_party_to_feishu_sheet.py @@ -51,11 +51,13 @@ ROWS = { '116': [ '量化猎头人才 职场分享', 154, 0, 418, 11, 104, 0, 0, 19, 0 ], # 117场 2026-03-06:关闭页 154min/503成员/72最高/36新增/16礼物/351灵魂力/51602曝光,小助手 151min/494进房/11人均/118互动/26关注 '117': [ '链接合作 派对流量 教培', 154, 51602, 503, 11, 118, 16, 351, 36, 72 ], + # 118场 2026-03-07:关闭页 190min/586成员/65最高/33新增/46礼物/7456灵魂力/74873曝光,小助手 180min/559进房/10人均/149互动/29关注 + '118': [ '3D打印 游戏代充 正财偏财', 190, 74873, 586, 10, 149, 46, 7456, 33, 65 ], } # 场次→按日期列填写时的日期(表头为当月日期 1~31) -SESSION_DATE_COLUMN = {'105': '20', '106': '21', '107': '23', '113': '2', '114': '3', '115': '4', '116': '5', '117': '6'} +SESSION_DATE_COLUMN = {'105': '20', '106': '21', '107': '23', '113': '2', '114': '3', '115': '4', '116': '5', '117': '6', '118': '7'} # 场次→月份(用于选择 2月/3月 等工作表标签,避免写入错月) -SESSION_MONTH = {'105': 2, '106': 2, '107': 2, '113': 3, '114': 3, '115': 3, '116': 3, '117': 3} +SESSION_MONTH = {'105': 2, '106': 2, '107': 2, '113': 3, '114': 3, '115': 3, '116': 3, '117': 3, '118': 3} # 派对录屏(飞书妙记)链接:场次 → 完整 URL,填表时写入「派对录屏」行对应列 # 从飞书妙记复制链接后填入,新场次需补全 @@ -65,6 +67,7 @@ PARTY_VIDEO_LINKS = { '115': 'https://cunkebao.feishu.cn/minutes/obcn8cgvnzk15yfy3buak735', '116': 'https://cunkebao.feishu.cn/minutes/obcn81825en52vt3eqoo482e', '117': 'https://cunkebao.feishu.cn/minutes/obcn9phnds9a96ma6t8ixa3z', + '118': 'https://cunkebao.feishu.cn/minutes/obcnaee1h83l1s169e3a18qp', } # 小程序当日运营数据:日期号 → {访问次数, 访客, 交易金额},填表时自动写入对应日期列 @@ -82,6 +85,7 @@ MINIPROGRAM_EXTRA_3 = { '4': {'访问次数': 0, '访客': 0, '交易金额': 0}, # 3月4日 115场 '5': {'访问次数': 0, '访客': 0, '交易金额': 0}, # 3月5日 116场 '6': {'访问次数': 0, '访客': 0, '交易金额': 0}, # 3月6日 117场 + '7': {'访问次数': 0, '访客': 0, '交易金额': 0}, # 3月7日 118场 } @@ -345,7 +349,7 @@ def main(): session = (sys.argv[1] if len(sys.argv) > 1 else '104').strip() row = ROWS.get(session) if not row: - print('❌ 未知场次,可用: 96, 97, 98, 99, 100, 103, 104, 105, 106, 107, 113, 114, 115, 116, 117') + print('❌ 未知场次,可用: 96, 97, 98, 99, 100, 103, 104, 105, 106, 107, 113, 114, 115, 116, 117, 118') sys.exit(1) token = load_token() or refresh_and_load_token() if not token: @@ -390,9 +394,9 @@ def main(): LABELS_GROUP = ['主题', '时长(分钟)', 'Soul推流人数', '进房人数', '人均时长(分钟)', '互动数量', '礼物', '灵魂力', '增加关注', '最高在线'] def _maybe_send_group(sess, raw_vals): - if sess not in ('105', '106', '107', '113', '114', '115', '116', '117'): + if sess not in ('105', '106', '107', '113', '114', '115', '116', '117', '118'): return - date_label = {'105': '2月20日', '106': '2月21日', '107': '2月23日', '113': '3月2日', '114': '3月3日', '115': '3月4日', '116': '3月5日', '117': '3月6日'}.get(sess, sess + '场') + date_label = {'105': '2月20日', '106': '2月21日', '107': '2月23日', '113': '3月2日', '114': '3月3日', '115': '3月4日', '116': '3月5日', '117': '3月6日', '118': '3月7日'}.get(sess, sess + '场') report_link = OPERATION_REPORT_LINK if sheet_id == SHEET_ID else f'https://cunkebao.feishu.cn/wiki/wikcnIgAGSNHo0t36idHJ668Gfd?sheet={sheet_id}' lines = [ '【Soul 派对运营报表】', @@ -403,7 +407,7 @@ def main(): for i, label in enumerate(LABELS_GROUP): val = raw_vals[i] if i < len(raw_vals) else '' lines.append(f'{label}:{val}') - src_date = {'105': '20260220', '106': '20260221', '107': '20260223', '113': '20260302', '114': '20260303', '115': '20260304', '116': '20260305', '117': '20260306'}.get(sess, '20260220') + src_date = {'105': '20260220', '106': '20260221', '107': '20260223', '113': '20260302', '114': '20260303', '115': '20260304', '116': '20260305', '117': '20260306', '118': '20260307'}.get(sess, '20260220') lines.append(f'数据来源:soul 派对 {sess}场 {src_date}.txt') msg = '\n'.join(lines) ok, _ = send_feishu_group_message(FEISHU_GROUP_WEBHOOK, msg) diff --git a/03_卡木(木)/木果_项目模板/PPT制作/脚本/天恩Word演讲PPT_12页.py b/03_卡木(木)/木果_项目模板/PPT制作/脚本/天恩Word演讲PPT_12页.py index 92672510..f2280a52 100644 --- a/03_卡木(木)/木果_项目模板/PPT制作/脚本/天恩Word演讲PPT_12页.py +++ b/03_卡木(木)/木果_项目模板/PPT制作/脚本/天恩Word演讲PPT_12页.py @@ -47,7 +47,8 @@ def set_slide_background(slide, color=BG_CREAM): pass -def add_title(slide, text, top=Inches(0.4), left=Inches(0.6), width=Inches(12), font_size=28): +def add_title(slide, text, top=Inches(0.4), left=Inches(0.6), width=Inches(12), font_size=28, center=False): + """添加标题;center=True 时文字居中""" tb = slide.shapes.add_textbox(left, top, width, Inches(0.8)) tf = tb.text_frame p = tf.paragraphs[0] @@ -55,10 +56,12 @@ def add_title(slide, text, top=Inches(0.4), left=Inches(0.6), width=Inches(12), p.font.size = Pt(font_size) p.font.bold = True p.font.color.rgb = TITLE_BROWN + if center: + p.alignment = PP_ALIGN.CENTER return tb -def add_body(slide, lines, top, left=Inches(0.6), width=Inches(7), font_size=20): +def add_body(slide, lines, top, left=Inches(0.6), width=Inches(7), font_size=20, center=False): tb = slide.shapes.add_textbox(left, top, width, Inches(3.5)) tf = tb.text_frame tf.word_wrap = True @@ -71,6 +74,8 @@ def add_body(slide, lines, top, left=Inches(0.6), width=Inches(7), font_size=20) p.font.size = Pt(font_size) p.font.color.rgb = TEXT_DARK p.space_after = Pt(8) + if center: + p.alignment = PP_ALIGN.CENTER return tb @@ -104,12 +109,16 @@ def add_flowchart(slide, top=Inches(2), left=Inches(0.8), glass_style=True): arrow.line.color.rgb = ACCENT -def add_picture_glass(slide, path, left, top, width, border_rgb=GLASS_BORDER): - """插入图片并加毛玻璃感边框(圆角效果用细白/浅灰边框)""" +SLIDE_W = Inches(13.333) + +def add_picture_glass(slide, path, left, top, width, border_rgb=GLASS_BORDER, center=False): + """插入图片并加毛玻璃感边框。center=True 时水平居中。""" path = Path(path) if not path.exists(): return None try: + if center: + left = (SLIDE_W - width) / 2 pic = slide.shapes.add_picture(str(path), left, top, width=width) pic.line.color.rgb = border_rgb pic.line.width = Pt(2) @@ -224,20 +233,19 @@ def build_presentation(photo_path=None, extra_images=None): def add_slide(): return prs.slides.add_slide(blank) - # ---------- 第1页:封面(毛玻璃感 + 插图)---------- + # ---------- 第1页:封面(标题居中、图片居中放大、汇报人一行)---------- s1 = add_slide() set_slide_background(s1, BG_CREAM) - add_title(s1, "天恩 Word · 智能单词记忆小助手", top=Inches(1.6), font_size=40) - add_body(s1, ["向全班、全校、全国的小朋友介绍我们的项目"], top=Inches(2.3), width=Inches(10), font_size=22) - add_body(s1, ["汇报人:施吴佶"], top=Inches(3.2), font_size=24) - add_body(s1, ["二年级 4 班"], top=Inches(3.8), font_size=20) + add_title(s1, "天恩 Word · 智能单词记忆小助手", top=Inches(0.7), left=Inches(0.5), width=Inches(12.3), font_size=40, center=True) + add_body(s1, ["向全班、全校、全国的小朋友介绍我们的项目"], top=Inches(1.4), left=Inches(1.5), width=Inches(10.3), font_size=22, center=True) if speaker_img and Path(speaker_img).exists(): - add_picture_glass(s1, speaker_img, Inches(9.4), Inches(2.0), Inches(2.4), BORDER) + add_picture_glass(s1, speaker_img, 0, Inches(2.0), Inches(3.2), BORDER, center=True) + add_title(s1, "汇报人:二年四班 4号 施吴佶", top=Inches(5.6), left=Inches(0.5), width=Inches(12.3), font_size=24, center=True) # ---------- 第2页:大家好,我是施吴佶(双图可用 speaker2)---------- s2 = add_slide() set_slide_background(s2, BG_CREAM) - add_title(s2, "大家好,我是施吴佶!", font_size=32) + add_title(s2, "大家好,我是施吴佶!", font_size=32, center=True) add_icon_text(s2, "👋", "我是二年级4班的一名小学生。", Inches(0.6), Inches(1.4)) add_icon_text(s2, "📚", "我和小伙伴们一起做了一个「记单词」的小项目,", Inches(0.6), Inches(2.0)) add_icon_text(s2, "✨", "今天想跟大家说一说它是怎么用的!", Inches(0.6), Inches(2.6)) @@ -247,7 +255,7 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第3页:今天讲什么 ---------- s3 = add_slide() set_slide_background(s3, BG_CREAM) - add_title(s3, "今天我要讲什么?", font_size=30) + add_title(s3, "今天我要讲什么?", font_size=30, center=True) add_body(s3, [ "我们要讲的是一个「智能单词记忆小助手」!", "它有一个很厉害的方法,叫「笛卡尔坐标记忆法」。", @@ -258,7 +266,7 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第4页:为什么做这个(可配情绪/改进示意图)---------- s4 = add_slide() set_slide_background(s4, BG_PINK) - add_title(s4, "我们为什么做这个?", font_size=30) + add_title(s4, "我们为什么做这个?", font_size=30, center=True) add_icon_text(s4, "😣", "记单词太难了!", Inches(0.6), Inches(1.3), 24) add_body(s4, [ "以前记单词总是死记硬背,很容易忘。", @@ -272,7 +280,7 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第5页:我们的办法 — 笛卡尔坐标 + 坐标系插图 ---------- s5 = add_slide() set_slide_background(s5, BG_CREAM) - add_title(s5, "我们的办法:笛卡尔坐标记忆法", font_size=28) + add_title(s5, "我们的办法:笛卡尔坐标记忆法", font_size=28, center=True) add_body(s5, [ "把单词拆成「前缀」和「后缀」:", "X 轴放后缀(比如 DAY、BOOK),Y 轴放前缀(比如 SUN、NOTE)。", @@ -286,7 +294,7 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第6页:什么是笛卡尔坐标 + DAY 单词表示例图 ---------- s6 = add_slide() set_slide_background(s6, BG_CREAM) - add_title(s6, "什么是笛卡尔坐标?", font_size=30) + add_title(s6, "什么是笛卡尔坐标?", font_size=30, center=True) add_body(s6, [ "就像画一个「十字」,横着的是后缀,竖着的是前缀。", "它们交叉的地方,就是一个新单词!", @@ -300,7 +308,7 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第7页:怎么用 — 流程图(毛玻璃)+ 步骤示意图 ---------- s7 = add_slide() set_slide_background(s7, BG_PINK) - add_title(s7, "怎么用?五步就会!", font_size=30) + add_title(s7, "怎么用?五步就会!", font_size=30, center=True) add_flowchart(s7, top=Inches(1.85), left=Inches(0.5), glass_style=True) if flow_words_img.exists(): add_picture_glass(s7, flow_words_img, Inches(7.2), Inches(2.0), Inches(5.3), GLASS_BORDER) @@ -311,7 +319,7 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第8页:记忆句和配图 + 联想示意图 ---------- s8 = add_slide() set_slide_background(s8, BG_CREAM) - add_title(s8, "记忆句和配图", font_size=30) + add_title(s8, "记忆句和配图", font_size=30, center=True) add_icon_text(s8, "📝", "一句子里藏着这一组的所有单词,读一句就复习一遍。", Inches(0.6), Inches(1.3)) add_icon_text(s8, "🖼️", "还有 AI 画的配图,看图就能想起这句话和单词。", Inches(0.6), Inches(1.9)) add_body(s8, [ @@ -323,7 +331,7 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第9页:界面长什么样 + 单词表示例 ---------- s9 = add_slide() set_slide_background(s9, BG_CREAM) - add_title(s9, "我们做的界面长什么样?", font_size=28) + add_title(s9, "我们做的界面长什么样?", font_size=28, center=True) add_body(s9, [ "打开网页就能用,不用装软件。", "上面是「坐标系」:左边是前缀,上边是后缀,中间是单词和意思。", @@ -336,7 +344,7 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第10页:我们班的收获 ---------- s10 = add_slide() set_slide_background(s10, BG_PINK) - add_title(s10, "我们班的收获", font_size=30) + add_title(s10, "我们班的收获", font_size=30, center=True) add_icon_text(s10, "🌟", "记单词变快了,而且不容易忘。", Inches(0.6), Inches(1.4)) add_icon_text(s10, "😊", "大家觉得好玩,都愿意多背几组。", Inches(0.6), Inches(2.0)) add_icon_text(s10, "🤝", "我们一起想点子、一起用,更像一个小组了。", Inches(0.6), Inches(2.6)) @@ -345,14 +353,14 @@ def build_presentation(photo_path=None, extra_images=None): # ---------- 第11页:谢谢大家 ---------- s11 = add_slide() set_slide_background(s11, BG_CREAM) - add_title(s11, "谢谢大家!", top=Inches(2.2), font_size=44) + add_title(s11, "谢谢大家!", top=Inches(2.2), font_size=44, center=True) add_body(s11, ["欢迎大家一起用「天恩 Word」记单词~"], top=Inches(3.0), font_size=24) - add_body(s11, ["汇报人:二年级4班 施吴佶"], top=Inches(4.0), font_size=20) + add_body(s11, ["汇报人:二年四班 4号 施吴佶"], top=Inches(4.0), font_size=20, center=True) # ---------- 第12页:感谢 ---------- s12 = add_slide() set_slide_background(s12, LIGHT_PINK) - add_title(s12, "感谢聆听", top=Inches(2.8), font_size=38) + add_title(s12, "感谢聆听", top=Inches(2.8), font_size=38, center=True) add_body(s12, ["感谢全班、全校、全国的老师和小伙伴们!"], top=Inches(3.6), font_size=22) out_ppt = OUT_DIR / "天恩Word项目介绍_二年级4班施吴佶_12页.pptx" diff --git a/运营中枢/工作台/gitea_push_log.md b/运营中枢/工作台/gitea_push_log.md index ed350154..6af00040 100644 --- a/运营中枢/工作台/gitea_push_log.md +++ b/运营中枢/工作台/gitea_push_log.md @@ -246,3 +246,4 @@ | 2026-03-06 13:07:01 | 🔄 卡若AI 同步 2026-03-06 13:06 | 更新:运营中枢工作台 | 排除 >20MB: 11 个 | | 2026-03-06 13:09:56 | 🔄 卡若AI 同步 2026-03-06 13:09 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 11 个 | | 2026-03-06 13:24:04 | 🔄 卡若AI 同步 2026-03-06 13:24 | 更新:Cursor规则、水桥平台对接、运营中枢工作台 | 排除 >20MB: 11 个 | +| 2026-03-07 06:14:48 | 🔄 卡若AI 同步 2026-03-07 06:14 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 11 个 | diff --git a/运营中枢/工作台/代码管理.md b/运营中枢/工作台/代码管理.md index 909a8d6b..2e6e49d3 100644 --- a/运营中枢/工作台/代码管理.md +++ b/运营中枢/工作台/代码管理.md @@ -249,3 +249,4 @@ | 2026-03-06 13:07:01 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-06 13:06 | 更新:运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-06 13:09:56 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-06 13:09 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-06 13:24:04 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-06 13:24 | 更新:Cursor规则、水桥平台对接、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | +| 2026-03-07 06:14:48 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-07 06:14 | 更新:水桥平台对接、运营中枢工作台 | 排除 >20MB: 11 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) |