行政会议座位图
党政机关/企事业单位会议排座利器:名单 → 排座 → 出图 → 座次表,一步到位。
第 0 步(必做):授权校验
每次执行本技能、在生成任何座位图之前,必须先执行一次:
C:\Users\zhang\.workbuddy\binaries\python\versions\3.13.12\python.exe \
"C:\Users\zhang\.workbuddy\skills\meeting-seating-chart\scripts\license.py" check
"allowed": true→ 正常继续;mode为trial时,回复开头用一行提示剩余免费次数。"allowed": false→ 立即停止生成,先执行下面的付款引导,把message(含四档价格与机器指纹)转达给用户;不得提供任何绕过方式。
触发付费墙时(allowed=false)的完整动作:
# 1) 生成付款引导页(内置收款码,可直接给用户扫码)
python scripts/license.py paycode --out "付费开通.html"
# 2) 用 present_files 把 付费开通.html 给用户看(含收款码、价格表、用户的机器指纹)
然后告诉用户:扫码付款 → 把付款截图和机器指纹发给作者 → 作者回授权码 → 把授权码发给我,我自动激活。
| 用户说法 | 执行 |
|---|---|
| "我要激活 / 我有授权码 AMSC-…" | python scripts/license.py activate <授权码> |
| "怎么收费 / 多少钱 / 我要买" | python scripts/license.py paycode 并 present_files 付款页 |
| "看看授权状态 / 我还剩几次" | python scripts/license.py status |
| "我的机器号是多少" | python scripts/license.py install-id |
每成功生成一张座位图后计次一次:
python scripts/license.py consume
trial 模式扣免费次数,credit(按次付费)模式扣次数;月卡/年卡/终身/作者模式不计次。
交互:最少问一次,问完就出图
用户往往只说"帮我排个座位图"。先按下列默认值出图,再把假设列出来让用户改,不要反复追问:
| 要素 | 默认值(用户没说时) |
|---|---|
| 会议形式 | 按描述自动判断(见下表),判断不了用 AskUserQuestion 一次问清 |
| 主席台 | 不设(用户名单前 N 位为领导时才设,--stage N) |
| 前排沙发区 | 不设;若提到"前排沙发/领导席/会见"则设,默认 5 席、分组 2+3 |
| 参会区排数 | 按人数自动算(--rows 留空) |
| 参会区列数 | 8 列 |
| 中间通道 | 列数为偶数时设在正中(--aisle-after 4),奇数时设在中间偏左 |
| 尊位方向 | 就座者左手为尊;若用户单位按观众视角左为尊,加 --order-left |
会议形式速查(--form)——用户描述场景时对号入座:
| 用户说 | --form | 布局 |
|---|---|---|
| 全市大会、报告会、表彰会、有主席台 | stage-meeting |
主席台 + 课堂式方阵 |
| 前方舞台/演出、前排沙发区、后面参会 | stage-sofa |
舞台横条 + 沙发区 + 参会区 |
| 回字形、座谈会、常务会、围坐 | hollow |
四面围坐、中央桌面 |
| U形、研讨、评审 | u-shape |
三面围坐、开口朝屏幕 |
| 会见、客商、签约、主客相对 | meet |
长桌两侧相对 |
| 圆桌、茶叙、论坛 | round |
多张圆桌自动分桌 |
| 宴会、晚宴、团拜、主桌 | banquet |
主桌 + 圆桌 |
| 培训、讲座、鱼骨 | fishbone |
斜排朝讲台 |
| 集中学习、考试 | classroom |
纯课堂 + 中间通道 |
一句话确认即可(用 AskUserQuestion 一次问清,最多 4 个选项):会议形式、沙发区/主席台人数、几排几列、通道位置、名单来源。
标准流程
第 1 步:拿到名单
# 直接给名单
python scripts/seating.py parse --names "张三 局长,李四 副局长,王五"
# 给文档(自动识别表头:姓名/职务/单位列)
python scripts/seating.py parse --file "D:/xxx/参会名单.xlsx"
python scripts/seating.py parse --file "名单.docx"
python scripts/seating.py parse --file "名单.csv" --col 姓名
解析后先把人名清单列给用户确认(人数、有无串行、职务是否带对),再进入第 2 步。人数不对就先修名单,不要硬排。
第 2 步:生成座位图
方式 A:指定会议形式(推荐,一句话搞定)
C:\Users\zhang\.workbuddy\binaries\python\versions\3.13.12\python.exe \
"C:\Users\zhang\.workbuddy\skills\meeting-seating-chart\scripts\seating.py" render \
--title "全市文化和旅游工作会议" \
--subtitle "2026年9月28日 09:00 · 市党政综合楼三楼第一会议室" \
--form stage-meeting --stage 7 \
--file "参会名单.xlsx" \
--cols 10 --aisle-after 5 \
--out "座位图.html" --csv "座次表.csv" --md "座次表.md" --open
形式(--form):stage-meeting 主席台+参会区 / stage-sofa 舞台+沙发+参会区 / hollow 回字形 / u-shape U形 / meet 会见式 / round 圆桌 / banquet 宴会 / fishbone 鱼骨培训 / classroom 纯课堂。人数、排数、列数、桌数不指定时全部按名单人数自动适配;想微调再叠加 --rows/--cols/--sofa/--stage/--tables/--per-table/--per-side 等参数。
方式 B:自由组合(--stage/--sofa/--rows/--cols 等逐块拼装)
python scripts/seating.py render --file 名单.xlsx --stage 7 --sofa 5 --sofa-groups "2,3" \
--rows 4 --cols 10 --aisle-after 5 --out 座位图.html
方式 C:配置文件(参数最多、最稳)
python scripts/seating.py render --config 会议.json --out 座位图.html
配置文件的 blocks 支持 type:stage 主席台 / sofa 沙发区 / grid 课堂方阵 / hollow 回字形(open_side 开口侧)/ round 圆桌(per_table/tables/main_name)/ meet 会见式(per_side/host_label/guest_label)/ fishbone 鱼骨(angle)。多块按顺序即从舞台到入口的前后顺序,可任意混搭。
第 3 步:交付
- 用
present_files呈现 HTML(可直接在预览面板查看,浏览器 Ctrl+P 打印为 A4 横向 PDF)。 - 座次表 CSV/Markdown 一并交付(用于做桌牌、发会议通知)。
- 回复里用一段话说明:共几人、座位布局、谁在尊位、空位多少、通道在哪。
参数速查
| 参数 | 说明 |
|---|---|
--form |
会议形式预设(九种,见上文速查表) |
--title / --subtitle |
会议名称 / 时间地点(打印在图纸顶部) |
--names |
直接输入名单,顿号、逗号、空格、换行均可 |
--file |
名单文件:.xlsx .docx .csv .txt .md .json |
--col |
指定 Excel/CSV 的姓名列名 |
--stage N |
主席台 N 席(从名单开头取),--stage-rows 2 排两排 |
--sofa N |
前排沙发区 N 席,--sofa-groups "2,3" 分两组(组间留茶几) |
--rows N --cols M |
参会区/回字形 N 排 M 列(留空按人数自动算) |
--aisle-after 5 |
第 5 列后设纵向通道;多个用逗号:"4,8" |
--aisle-rows-after 2 |
第 2 排后设横向通道 |
--open-side |
回字形/U形开口侧:front(靠主席台,即U形)/back/left/right |
--per-side N |
会见式每侧席数(默认人数对半) |
--host-label/--guest-label |
会见式两侧标签(默认 主方/客方) |
--tables N --per-table M |
圆桌桌数 / 每桌人数(默认每桌 10 人、桌数自动算) |
--angle |
鱼骨形倾斜角度,默认 6 度 |
--podium / --no-podium |
显示/隐藏"主席台/屏幕"横条 |
--grid-fill row\|snake\|front-center |
参会区填充:逐行 / 蛇形 / 首排居中尊位 |
--order-left |
改为观众视角左为尊(默认就座者左手为尊) |
--vip 张三 李四 |
重点人员姓名标红 |
--empty keep\|placeholder |
空位留白 / 显示"空位" |
--out / --csv / --md |
输出 HTML / 座次表 CSV / Markdown 座次表 |
--open |
生成后用默认浏览器打开 |
排座规则
默认按党政机关惯例:1号居中,2号在1号左手边(观众视角右侧),3号在1号右手边,依次左右分开;偶数时 1、2 号同时居中。前排为上、中间为上。主席台多排时,最靠近观众的一排为尊位。
不同形式的尊位口径(详见 references/protocol.md):
- 主席台/沙发/参会区(面向前方的形式):前排为上、中间为上;
- 回字形/U形/圆桌(围坐形式):面门为上(图纸下方为入口),下边中间为 1 号,再左右两侧从下往上,最后对面;
- 会见式:主客相对,每侧中间为尊,主方面朝门口、客方面门;
- 圆桌:每桌面门位为主位,按主位右手依次排。
配置文件(blocks)字段:type 取 stage(主席台)/ sofa(沙发区)/ grid(课堂方阵)/ hollow(回字形,open_side 开口侧)/ round(圆桌,per_table/tables/main_name 主桌名)/ meet(会见式,per_side/host_label/guest_label)/ fishbone(鱼骨,angle);多块顺序即从前(舞台侧)到后(入口侧)。
边界与提醒
- 名单人数 > 座位数:脚本会提示"还有 N 人未安排",此时主动建议加排/加列/加桌,不要静默截断。
- 名单顺序即职务高低顺序;若用户给的是无序名单,先问清楚排序依据再排。
- 涉外部级、会谈式场合规则不同(以右为尊、面门为上),先读
references/protocol.md再动手。 - 不确定的职务排序(如同级多部门),主动询问,不要臆断。
- 场地限制(如会议室只能放 6 列):用
--cols显式指定,行数会自动适配。 - 改形式不用重报名单:同一份名单加
--form即可重出一版,让用户对比挑选。
使用额度与付费
- 每台电脑赠送 3 次免费试用(生成一张座位图计 1 次),第 4 次起需付费,无需注册即可体验。
| 档位 | 价格 | 权益 | 授权码形如 |
|---|---|---|---|
| 按次付费 | ¥2 / 次 | 单次使用,即用即付 | AMSC-CREDIT-5-<机器码>-XXXX |
| 月卡 | ¥30 | 30 天不限次数 | AMSC-MONTHLY-<到期日>-<机器码>-XXXX |
| 年卡 | ¥120 | 365 天不限次数 | AMSC-YEARLY-<到期日>-<机器码>-XXXX |
| 终身版 | ¥300 | 永久不限次数(本机) | AMSC-LIFETIME-LIFE-<机器码>-XXXX |
- 收款码内置在技能里(
assets/paycode.jpg,微信收款码),license.py paycode会生成带收款码和价格表的付款引导页,直接扫码即可。 - 完整购买流程:用户扫码付款 → 把付款截图 + 机器指纹(
install-id输出)发给作者 → 作者签发授权码 → 用户把授权码发给 AI → 自动激活。 - 作者签发命令(仅作者本机可执行):
python scripts/license.py issue --tier single --uses 5 --fid <机器指纹> # 按次 5 次
python scripts/license.py issue --tier monthly --fid <机器指纹> # 月卡 30 天
python scripts/license.py issue --tier yearly --fid <机器指纹> # 年卡 365 天
python scripts/license.py issue --tier lifetime --fid <机器指纹> # 终身
- 隐私说明:全程本机运行,名单与座位数据只存在使用者自己的电脑里,不上传任何服务器。
- 反篡改:授权状态文件带 HMAC 校验,手工改额度会被判定失效并需重新激活。作者口令(
OWNER_PASS_HASHES)与签发密钥(DEFAULT_SECRET)已设为作者本人的值;若对外分发,建议改用环境变量AMSC_SECRET覆盖,别把密钥留在包里。
资源索引
| 资源 | 何时加载 |
|---|---|
scripts/seating.py |
生成座位图、解析名单(主脚本) |
scripts/roster.py |
名单解析库(被 seating.py 调用) |
scripts/license.py |
授权校验、激活、计次、付款页生成、签发 |
assets/template.html |
打印模板(脚本自动套用) |
assets/paycode.jpg |
作者收款码(付费墙时由 paycode 命令内嵌展示,base64 打包,无需外链) |
assets/config-example.json |
复杂会议的配置模板(主席台+沙发+参会区) |
assets/config-example-hollow.json |
回字形座谈配置模板 |
references/protocol.md |
排座礼仪与九种会场布局规则 |
快速验收(无名单时)
python scripts/seating.py demo # 经典版:主席台+沙发+参会区
python scripts/seating.py demo --form hollow # 看回字形效果
python scripts/seating.py demo --form round # 看圆桌效果
九种形式对照效果可用上述命令逐个生成,一次看全则在 SKILL 目录外运行 demo 后拼接(见工作日志)。