🔄 卡若AI 同步 2026-02-17 15:40 | 变更 17 个文件 | 排除 >20MB: 4 个
Some checks failed
Sync GitHub to CKB NAS Gitea / sync (push) Has been cancelled
Some checks failed
Sync GitHub to CKB NAS Gitea / sync (push) Has been cancelled
This commit is contained in:
7
01_卡资(金)/金仓_存储备份/Gitea管理/脚本/gitea_push.conf
Normal file
7
01_卡资(金)/金仓_存储备份/Gitea管理/脚本/gitea_push.conf
Normal file
@@ -0,0 +1,7 @@
|
||||
# Gitea 推送配置(可选)
|
||||
# 在局域网时用此 IP 直连,避免走代理;不填或留空则始终用域名(外网走代理)
|
||||
# 示例:GITEA_LAN_IP=192.168.1.100
|
||||
GITEA_LAN_IP=
|
||||
|
||||
# 外网时使用的代理(本机 Clash 等)。留空则不走代理
|
||||
GITEA_HTTP_PROXY=http://127.0.0.1:7897
|
||||
94
01_卡资(金)/金仓_存储备份/Gitea管理/脚本/gitea_push_smart.sh
Executable file
94
01_卡资(金)/金仓_存储备份/Gitea管理/脚本/gitea_push_smart.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
# ============================================
|
||||
# Gitea 智能推送:局域网用 LAN IP 直连,外网用域名+代理
|
||||
# 用法:在仓库根目录执行,或传入 REPO_DIR
|
||||
# 依赖:同目录下 gitea_push.conf(可选 GITEA_LAN_IP、GITEA_HTTP_PROXY)
|
||||
# ============================================
|
||||
|
||||
REPO_DIR="${1:-/Users/karuo/Documents/个人/卡若AI}"
|
||||
REMOTE="${2:-gitea}"
|
||||
BRANCH="${3:-main}"
|
||||
CONF_DIR="$(dirname "$0")"
|
||||
CONF="$CONF_DIR/gitea_push.conf"
|
||||
|
||||
cd "$REPO_DIR" || exit 1
|
||||
|
||||
# 读取配置(去掉注释和空行)
|
||||
GITEA_LAN_IP=""
|
||||
GITEA_HTTP_PROXY="http://127.0.0.1:7897"
|
||||
if [ -f "$CONF" ]; then
|
||||
while IFS= read -r line; do
|
||||
[[ "$line" =~ ^#.*$ ]] && continue
|
||||
[[ -z "${line// /}" ]] && continue
|
||||
if [[ "$line" =~ ^GITEA_LAN_IP=(.*)$ ]]; then
|
||||
GITEA_LAN_IP="${BASH_REMATCH[1]}"
|
||||
GITEA_LAN_IP="${GITEA_LAN_IP%%#*}"
|
||||
GITEA_LAN_IP="${GITEA_LAN_IP// /}"
|
||||
elif [[ "$line" =~ ^GITEA_HTTP_PROXY=(.*)$ ]]; then
|
||||
GITEA_HTTP_PROXY="${BASH_REMATCH[1]}"
|
||||
GITEA_HTTP_PROXY="${GITEA_HTTP_PROXY%%#*}"
|
||||
GITEA_HTTP_PROXY="${GITEA_HTTP_PROXY// /}"
|
||||
fi
|
||||
done < "$CONF"
|
||||
fi
|
||||
|
||||
ORIG_URL=$(git remote get-url "$REMOTE" 2>/dev/null)
|
||||
[ -z "$ORIG_URL" ] && { echo "[gitea_push_smart] 错误:remote $REMOTE 不存在"; exit 1; }
|
||||
|
||||
# 从 URL 提取:http://user:token@host:3000/fnvtk/karuo-ai.git
|
||||
AUTH_PREFIX="${ORIG_URL%%@*}@"
|
||||
PATH_PART="${ORIG_URL#*@}"
|
||||
REPO_PATH="${PATH_PART#*:3000/}"
|
||||
[ -z "$REPO_PATH" ] && REPO_PATH="fnvtk/karuo-ai.git"
|
||||
|
||||
do_push() {
|
||||
if [ -n "$1" ]; then
|
||||
export HTTP_PROXY="$1" HTTPS_PROXY="$1" ALL_PROXY="$1"
|
||||
echo "[gitea_push_smart] 使用代理推送(外网)..."
|
||||
else
|
||||
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
|
||||
echo "[gitea_push_smart] 直连推送(局域网)..."
|
||||
fi
|
||||
git push "$REMOTE" "$BRANCH" 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
MAX_TRY=3
|
||||
# 1) 若配置了 LAN IP 且能连通 3000,则用 LAN 推送
|
||||
if [ -n "$GITEA_LAN_IP" ]; then
|
||||
CODE=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 3 "http://${GITEA_LAN_IP}:3000/" 2>/dev/null)
|
||||
if [ "$CODE" = "200" ]; then
|
||||
LAN_URL="http://${AUTH_PREFIX}${GITEA_LAN_IP}:3000/${REPO_PATH}"
|
||||
git remote set-url "$REMOTE" "$LAN_URL"
|
||||
for i in $(seq 1 $MAX_TRY); do
|
||||
echo "[gitea_push_smart] 第 $i/$MAX_TRY 次尝试(局域网 $GITEA_LAN_IP:3000)..."
|
||||
if do_push ""; then
|
||||
git remote set-url "$REMOTE" "$ORIG_URL"
|
||||
echo "[gitea_push_smart] 推送成功(局域网)"
|
||||
exit 0
|
||||
fi
|
||||
[ $i -lt $MAX_TRY ] && sleep 5
|
||||
done
|
||||
git remote set-url "$REMOTE" "$ORIG_URL"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 2) 使用域名 + 代理推送(外网)
|
||||
for i in $(seq 1 $MAX_TRY); do
|
||||
echo "[gitea_push_smart] 第 $i/$MAX_TRY 次尝试(外网域名 + 代理)..."
|
||||
if [ -n "$GITEA_HTTP_PROXY" ]; then
|
||||
if do_push "$GITEA_HTTP_PROXY"; then
|
||||
echo "[gitea_push_smart] 推送成功(外网)"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
if do_push ""; then
|
||||
echo "[gitea_push_smart] 推送成功"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
[ $i -lt $MAX_TRY ] && echo "[gitea_push_smart] 5 秒后重试..." && sleep 5
|
||||
done
|
||||
|
||||
echo "[gitea_push_smart] 错误:$MAX_TRY 次尝试均失败"
|
||||
exit 1
|
||||
18
01_卡资(金)/金仓_存储备份/Gitea管理/脚本/手动推送直到成功.sh
Executable file
18
01_卡资(金)/金仓_存储备份/Gitea管理/脚本/手动推送直到成功.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash
|
||||
# 手动推送直到成功 - 网络不稳定时使用
|
||||
# 用法: bash 手动推送直到成功.sh
|
||||
|
||||
REPO_DIR="/Users/karuo/Documents/个人/卡若AI"
|
||||
cd "$REPO_DIR" || exit 1
|
||||
|
||||
for i in 1 2 3 4 5 6 7 8 9 10; do
|
||||
echo "[$(date '+%H:%M:%S')] 第 $i 次尝试..."
|
||||
if git push gitea main 2>&1; then
|
||||
echo "✅ 推送成功"
|
||||
exit 0
|
||||
fi
|
||||
echo "⏳ 5 秒后重试..."
|
||||
sleep 5
|
||||
done
|
||||
echo "❌ 10 次尝试后仍未成功,请检查网络后重试"
|
||||
exit 1
|
||||
@@ -85,10 +85,16 @@ fi
|
||||
log "提交成功:${CHANGED_COUNT} 个文件"
|
||||
|
||||
# ============================================
|
||||
# Step 4: 推送到 Gitea
|
||||
# Step 4: 推送到 Gitea(智能:局域网用 IP,外网用域名+代理)
|
||||
# ============================================
|
||||
git push "$REMOTE" "$BRANCH" --quiet 2>&1
|
||||
PUSH_RESULT=$?
|
||||
PUSH_SCRIPT="$REPO_DIR/01_卡资(金)/金仓_存储备份/Gitea管理/脚本/gitea_push_smart.sh"
|
||||
if [ -x "$PUSH_SCRIPT" ]; then
|
||||
bash "$PUSH_SCRIPT" "$REPO_DIR" "$REMOTE" "$BRANCH" 2>&1 | tee -a "$LOG_FILE"
|
||||
PUSH_RESULT=${PIPESTATUS[0]}
|
||||
else
|
||||
git push "$REMOTE" "$BRANCH" --quiet 2>&1
|
||||
PUSH_RESULT=$?
|
||||
fi
|
||||
|
||||
if [ $PUSH_RESULT -eq 0 ]; then
|
||||
log "推送成功 → gitea/$BRANCH"
|
||||
|
||||
@@ -292,6 +292,20 @@ sudo killall -HUP mDNSResponder
|
||||
echo "DNS 缓存已刷新"
|
||||
```
|
||||
|
||||
### Cursor 上传占用降低
|
||||
|
||||
已在 `~/Library/Application Support/Cursor/User/settings.json` 中建议或已配置:
|
||||
|
||||
- `"redhat.telemetry.enabled": false` — 关闭 Red Hat 扩展遥测上传
|
||||
- `"telemetry.telemetryLevel": "off"` — 关闭 IDE 遥测
|
||||
- `"cursor.general.enableCodebaseIndexing": false` — 关闭代码库索引(避免整库分块上传)
|
||||
|
||||
**需在 Cursor 内手动操作(进一步降上传):**
|
||||
|
||||
1. **开启 Privacy Mode**:`Cursor` → `Settings` → `General` → 打开 **Privacy Mode**(代码不存 Cursor/第三方,部分 AI 能力会受限)
|
||||
2. **少 @ 大文件**:对话里少引用整文件,只 @ 必要片段,可明显减少单次请求上传量
|
||||
3. **不用时关扩展**:禁用暂时不用的扩展,减少后台同步与遥测
|
||||
|
||||
---
|
||||
|
||||
## 8. 性能基准
|
||||
@@ -391,6 +405,7 @@ echo "=========================================="
|
||||
| Finder 无响应 | `killall Finder` |
|
||||
| Docker 异常 | 重启 Docker Desktop 或 `docker system prune` |
|
||||
| 网络异常 | 刷新 DNS:`sudo dscacheutil -flushcache` |
|
||||
| Cursor 上传大 | 关遥测/关代码库索引见上文「Cursor 上传占用降低」;可开 Privacy Mode |
|
||||
| iCloud 不同步 | `killall bird && killall cloudd` |
|
||||
| Spotlight 搜索慢 | `sudo mdutil -E /` 重建索引 |
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"access_token": "u-76soiQf0t11GcweJFhpzl4l5mgMBk1qpWoaaZxM00AOj",
|
||||
"refresh_token": "ur-6isX.Eitt5rHrnvVBecFhql5mqUBk1gpM8aaUNM00wz7",
|
||||
"access_token": "u-7FEQ3dsVpbBVy1HPRK6OCul5mUMBk1gNMoaaENM00Byi",
|
||||
"refresh_token": "ur-58aJUppSxdOFYJhaRlNUaMl5miOBk1UNpEaaIMQ00xD6",
|
||||
"name": "飞书用户",
|
||||
"auth_time": "2026-02-14T08:56:27.486169"
|
||||
"auth_time": "2026-02-17T10:27:47.958573"
|
||||
}
|
||||
93
02_卡人(水)/水桥_平台对接/飞书管理/脚本/write_feb15_summary.py
Normal file
93
02_卡人(水)/水桥_平台对接/飞书管理/脚本/write_feb15_summary.py
Normal file
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
2月15日后工作小结 → 飞书日志(集中写在一日内)
|
||||
数据来源:分布式算力矩阵、Soul派对101/102场、全量扫描、经验沉淀、聊天与文件
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
if SCRIPT_DIR not in sys.path:
|
||||
sys.path.insert(0, SCRIPT_DIR)
|
||||
|
||||
from auto_log import get_token_silent, ensure_service, CONFIG, WIKI_URL
|
||||
|
||||
# 2月15日~今 工作小结(一条事件)
|
||||
DATE_STR = "2月18日"
|
||||
CALLOUT = "[总结] 2月15日~今"
|
||||
|
||||
TASKS = [
|
||||
{
|
||||
"person": "卡若",
|
||||
"events": ["分布式算力矩阵", "全量扫描", "Soul派对", "安全与运维", "经验沉淀"],
|
||||
"quadrant": "重要紧急",
|
||||
"t_targets": [
|
||||
"分布式算力矩阵→三次对话吸收+资产全景+安全加固 📊 (85%)",
|
||||
"全量扫描→33.9万IP防断网跑完+6984验证+1281高价值主机 🔍 (100%)",
|
||||
"Soul派对→101场(2/16)与102场(2/17)纪要+主题迭代 🎙️ (100%)",
|
||||
"安全运维→小型宝塔攻击链处理+SSH加固待办+CKB NAS绑定 🛡️ (70%)",
|
||||
],
|
||||
"n_process": [
|
||||
"【算力矩阵】2/15三次Agent对话吸收→资产清单(公司NAS/家NAS/存客宝/kr宝塔)→PCDN收益模型→规模化测算→部署路线(Docker/chroot)→紧急待办P0-P2",
|
||||
"【全量扫描】2/16 33.9万IP、并发2000防断网→TCP存活8257、协议验证6984、高价值1281→反填04暴力破解→家宽优化SKILL吸收",
|
||||
"【Soul派对】101场(程序员AI工具链×电动车民宿×金融)、102场(过年第一个红包发给谁×人生三贵人)→纪要产出+长图→话题迭代",
|
||||
"【安全】小型宝塔XMRig/后门清理→攻击IP封禁→存客宝/kr宝塔SSH待开→CKB NAS网心云绑定15880802661待执行",
|
||||
],
|
||||
"t_thoughts": [
|
||||
"算力矩阵先摸清资产与安全,再规模化;家宽降并发可跑完全程",
|
||||
"派对纪要沉淀话题与视角,红包/贵人主题可延展内容",
|
||||
],
|
||||
"w_work": ["运维部署", "安全加固", "扫描与验证", "内容纪要", "经验沉淀"],
|
||||
"f_feedback": [
|
||||
"全量扫描完成 ✅",
|
||||
"Soul 101/102场纪要 ✅",
|
||||
"算力矩阵总结+待办明确 ✅",
|
||||
"CKB绑定+宝塔加固待办 ⏰",
|
||||
],
|
||||
},
|
||||
{
|
||||
"person": "卡资",
|
||||
"events": ["扫描模块", "主机库校验", "金仓备份"],
|
||||
"quadrant": "重要不紧急",
|
||||
"t_targets": [
|
||||
"01_扫描模块→家宽防断网实践+SKILL更新 📁 (100%)",
|
||||
"主机库校验→2/16报告+smart_brute下游就绪 🔐 (100%)",
|
||||
],
|
||||
"n_process": [
|
||||
"【扫描】references/扫描断网分析与优化、全量扫描最终结果_20260216、verified_scan/ssh_reachable写入",
|
||||
"【校验】主机库_校验报告_20260216、全量扫描反填04暴力破解",
|
||||
],
|
||||
"t_thoughts": ["家宽并发2000/批次4000可稳定跑完全程"],
|
||||
"w_work": ["运维脚本", "文档与报告"],
|
||||
"f_feedback": ["扫描与校验闭环 ✅"],
|
||||
},
|
||||
]
|
||||
|
||||
def main():
|
||||
print("=" * 50)
|
||||
print("📅 写入飞书:2月15日后工作小结(单日汇总)")
|
||||
print("=" * 50)
|
||||
|
||||
ensure_service()
|
||||
print("\n🔑 获取 Token(静默)...")
|
||||
token = get_token_silent()
|
||||
if not token:
|
||||
print("❌ 无法获取 Token")
|
||||
sys.exit(1)
|
||||
|
||||
# 使用 auto_log 的 write_log + build_blocks(需传入自定义 DATE_STR 和 TASKS)
|
||||
from auto_log import write_log
|
||||
print("\n📝 写入飞书日志...")
|
||||
ok = write_log(token, DATE_STR, TASKS)
|
||||
|
||||
if ok:
|
||||
subprocess.run(["open", WIKI_URL], capture_output=True)
|
||||
print(f"\n📎 已打开飞书: {WIKI_URL}")
|
||||
print("\n✅ 完成!")
|
||||
else:
|
||||
print("\n❌ 写入失败")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
533
04_卡火(火)/火眼_智能追问/智能纪要/output/meeting_101_长图.html
Normal file
533
04_卡火(火)/火眼_智能追问/智能纪要/output/meeting_101_长图.html
Normal file
@@ -0,0 +1,533 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>1月27日|程序员AI工具链×电动车民宿×金融视角 - 卡若派对纪要</title>
|
||||
<style>
|
||||
/* ===== 非101风格:简约编辑风,结构同 meeting.html ===== */
|
||||
:root {
|
||||
--accent: #475569;
|
||||
--accent-soft: #e2e8f0;
|
||||
--white: #ffffff;
|
||||
--bg-page: #f8fafc;
|
||||
--text-primary: #0f172a;
|
||||
--text-secondary: #475569;
|
||||
--text-muted: #64748b;
|
||||
--border: #e2e8f0;
|
||||
--border-strong: #cbd5e1;
|
||||
--key-bg: #f1f5f9;
|
||||
--key-border: #cbd5e1;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
background: var(--bg-page);
|
||||
min-height: 100vh;
|
||||
color: var(--text-primary);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.container { max-width: 1120px; margin: 0 auto; padding: 32px 28px; }
|
||||
|
||||
.section-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-bottom: 18px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 2px solid var(--border);
|
||||
font-size: 1.2rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.section-head .section-num {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
color: var(--accent);
|
||||
background: var(--accent-soft);
|
||||
border: 2px solid var(--border-strong);
|
||||
border-radius: 8px;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
.section-head .section-num.blue,
|
||||
.section-head .section-num.orange,
|
||||
.section-head .section-num.green,
|
||||
.section-head .section-num.purple { color: var(--accent); background: var(--accent-soft); border-color: var(--border-strong); }
|
||||
.section-head .section-icon { font-size: 1.25rem; opacity: 0.85; }
|
||||
|
||||
.header {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
padding: 32px 36px 24px;
|
||||
margin-bottom: 28px;
|
||||
box-shadow: none;
|
||||
}
|
||||
.header h1 {
|
||||
font-size: 1.75rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.3;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
.header .subtitle {
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 18px;
|
||||
max-width: 720px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
.header .nav-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; }
|
||||
.header .nav-tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
background: var(--accent-soft);
|
||||
color: var(--text-secondary);
|
||||
padding: 8px 14px;
|
||||
border-radius: 20px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 600;
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
.header .nav-tag .nav-icon { font-size: 1rem; }
|
||||
.header .meta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 16px;
|
||||
font-size: 0.88rem;
|
||||
color: var(--text-muted);
|
||||
padding-top: 12px;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.speakers-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.speaker-card {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
overflow: hidden;
|
||||
box-shadow: none;
|
||||
}
|
||||
.speaker-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-primary);
|
||||
background: var(--accent-soft);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.speaker-card .head .head-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
background: var(--white);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.speaker-card .head.blue,
|
||||
.speaker-card .head.orange,
|
||||
.speaker-card .head.green,
|
||||
.speaker-card .head.purple { background: var(--accent-soft); color: var(--text-primary); border-bottom-color: var(--border); }
|
||||
.speaker-card .body { padding: 16px; }
|
||||
.speaker-card .role { font-weight: 700; font-size: 0.9rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.speaker-card .topics { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.5; margin-bottom: 10px; }
|
||||
.speaker-card .pills { display: flex; flex-wrap: wrap; gap: 6px; }
|
||||
.speaker-card .pill {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 600;
|
||||
padding: 4px 10px;
|
||||
border-radius: 10px;
|
||||
background: var(--accent-soft);
|
||||
color: var(--text-secondary);
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
.speaker-card .pill.blue,
|
||||
.speaker-card .pill.orange,
|
||||
.speaker-card .pill.green,
|
||||
.speaker-card .pill.purple,
|
||||
.speaker-card .pill.red { background: var(--accent-soft); color: var(--text-secondary); border-color: var(--border); }
|
||||
|
||||
.lean-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.lean-card {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-top: 4px solid var(--accent);
|
||||
overflow: hidden;
|
||||
box-shadow: none;
|
||||
}
|
||||
.lean-card.orange,
|
||||
.lean-card.blue,
|
||||
.lean-card.green { border-top-color: var(--accent); }
|
||||
.lean-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-primary);
|
||||
background: var(--accent-soft);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.lean-card .head .lean-icon {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
background: var(--white);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.lean-card .head.orange,
|
||||
.lean-card .head.blue,
|
||||
.lean-card .head.green { background: var(--accent-soft); color: var(--text-primary); }
|
||||
.lean-card .body { padding: 16px; }
|
||||
.lean-card h4 { font-size: 0.88rem; font-weight: 700; margin-bottom: 8px; color: var(--text-primary); }
|
||||
.lean-card ul { list-style: none; }
|
||||
.lean-card li {
|
||||
font-size: 0.82rem;
|
||||
padding: 5px 0;
|
||||
padding-left: 16px;
|
||||
position: relative;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
.lean-card li::before { content: "▪"; position: absolute; left: 0; color: var(--text-muted); font-weight: bold; }
|
||||
.lean-card li .inline-tag { font-size: 0.7rem; padding: 2px 6px; border-radius: 4px; margin-right: 4px; font-weight: 600; background: var(--accent-soft); color: var(--text-secondary); }
|
||||
.lean-card li .tag-项目,
|
||||
.lean-card li .tag-产品,
|
||||
.lean-card li .tag-运营,
|
||||
.lean-card li .tag-商业 { background: var(--accent-soft); color: var(--text-secondary); }
|
||||
|
||||
.flow-wrap {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
padding: 24px 28px;
|
||||
margin-bottom: 32px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
.flow-node {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
min-width: 88px;
|
||||
}
|
||||
.flow-node .circle {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.2rem;
|
||||
color: var(--text-primary);
|
||||
background: var(--accent-soft);
|
||||
border: 2px solid var(--border-strong);
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.flow-node .circle.blue,
|
||||
.flow-node .circle.purple,
|
||||
.flow-node .circle.orange,
|
||||
.flow-node .circle.red,
|
||||
.flow-node .circle.green { background: var(--accent-soft); color: var(--text-primary); border-color: var(--border-strong); }
|
||||
.flow-node .label { font-size: 0.8rem; font-weight: 700; color: var(--text-primary); text-align: center; }
|
||||
.flow-node .time { font-size: 0.7rem; color: var(--text-muted); margin-top: 2px; }
|
||||
.flow-arrow { color: var(--border-strong); font-size: 1.1rem; font-weight: bold; }
|
||||
|
||||
.hot-list { margin-bottom: 32px; }
|
||||
.hot-item {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
margin-bottom: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.hot-item .top-row {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 14px;
|
||||
padding: 16px 20px;
|
||||
background: var(--bg-page);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.hot-item .signal-tag {
|
||||
flex-shrink: 0;
|
||||
padding: 6px 12px;
|
||||
border-radius: 8px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
background: var(--accent);
|
||||
color: var(--white);
|
||||
}
|
||||
.hot-item .signal-tag.ai,
|
||||
.hot-item .signal-tag.user,
|
||||
.hot-item .signal-tag.expert,
|
||||
.hot-item .signal-tag.question { background: var(--accent); color: var(--white); }
|
||||
.hot-item .signal-time { font-size: 0.72rem; color: var(--text-muted); margin-top: 4px; }
|
||||
.hot-item .topic-wrap { flex: 1; }
|
||||
.hot-item .topic-wrap .q-icon { color: var(--accent); font-weight: 800; margin-right: 6px; }
|
||||
.hot-item .topic-wrap .topic-title { font-weight: 800; font-size: 1rem; color: var(--text-primary); }
|
||||
.hot-item .content { padding: 16px 20px; font-size: 0.9rem; color: var(--text-secondary); line-height: 1.65; }
|
||||
.hot-item .content ul { margin: 10px 0 0 20px; }
|
||||
.hot-item .content li { margin: 5px 0; }
|
||||
.hot-item .key-point {
|
||||
margin: 0 20px 16px;
|
||||
padding: 14px 16px;
|
||||
background: var(--key-bg);
|
||||
border: 1px solid var(--key-border);
|
||||
border-radius: 10px;
|
||||
font-size: 0.88rem;
|
||||
font-weight: 600;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.hot-item .key-point .label {
|
||||
display: inline-block;
|
||||
background: var(--accent-soft);
|
||||
color: var(--accent);
|
||||
padding: 3px 10px;
|
||||
border-radius: 6px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 800;
|
||||
margin-bottom: 8px;
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.next-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.next-card {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-top: 4px solid var(--accent);
|
||||
padding: 20px;
|
||||
}
|
||||
.next-card.blue,
|
||||
.next-card.purple,
|
||||
.next-card.red { border-top-color: var(--accent); }
|
||||
.next-card .next-icon {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.1rem;
|
||||
margin-bottom: 12px;
|
||||
background: var(--accent-soft);
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
.next-card.orange .next-icon,
|
||||
.next-card.blue .next-icon,
|
||||
.next-card.purple .next-icon,
|
||||
.next-card.red .next-icon { background: var(--accent-soft); border: 1px solid var(--border); }
|
||||
.next-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.next-card .desc { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.55; }
|
||||
|
||||
.progress-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.progress-card {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-left: 5px solid var(--accent);
|
||||
padding: 20px;
|
||||
}
|
||||
.progress-card.blue { border-left-color: var(--accent); }
|
||||
.progress-card .progress-icon { font-size: 1.3rem; margin-bottom: 10px; }
|
||||
.progress-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.progress-card .desc { font-size: 0.85rem; color: var(--text-secondary); line-height: 1.6; }
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 28px;
|
||||
font-size: 0.82rem;
|
||||
color: var(--text-muted);
|
||||
border-top: 1px solid var(--border);
|
||||
margin-top: 12px;
|
||||
}
|
||||
.footer .brand { color: var(--accent); font-weight: 700; }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.speakers-row { grid-template-columns: repeat(2, 1fr); }
|
||||
.lean-row { grid-template-columns: 1fr; }
|
||||
.next-grid { grid-template-columns: 1fr; }
|
||||
.progress-row { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
.speakers-row { grid-template-columns: 1fr; }
|
||||
.flow-wrap { flex-direction: column; }
|
||||
.flow-arrow { transform: rotate(90deg); }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="header">
|
||||
<h1>1月27日|程序员AI工具链×电动车民宿×金融视角</h1>
|
||||
<p class="subtitle">汇集实操经验与思考,核心关注:提要、细则、方法论、商业与链接。</p>
|
||||
<div class="nav-tags">
|
||||
<span class="nav-tag"><span class="nav-icon">👤</span>分享人</span>
|
||||
<span class="nav-tag"><span class="nav-icon">🎯</span>目标</span>
|
||||
<span class="nav-tag"><span class="nav-icon">❓</span>关键问题</span>
|
||||
<span class="nav-tag"><span class="nav-icon">💡</span>AI复盘</span>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span>⏱ 2小时26分47秒</span>
|
||||
<span>👥 600+</span>
|
||||
<span>📍 Soul派对早场</span>
|
||||
<span>📅 2026-01-27 06:54</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">一</span>
|
||||
<span class="section-icon">👤</span>
|
||||
分享人介绍
|
||||
</h2>
|
||||
<div class="speakers-row"><div class="speaker-card">
|
||||
<div class="head blue"><span class="head-icon">👤</span>卡若</div>
|
||||
<div class="body"><p class="role">派对主持人·融资运营</p><p class="topics">电动车×民宿撮合·不良资产收购·金融杠杆论</p></div>
|
||||
</div>
|
||||
|
||||
<div class="speaker-card">
|
||||
<div class="head orange"><span class="head-icon">👤</span>程序员(6号)</div>
|
||||
<div class="body"><p class="role">全栈开发·Cursor用户</p><p class="topics">20年编码经历·AI超级个体探索·量化交易脚本</p></div>
|
||||
</div>
|
||||
|
||||
<div class="speaker-card">
|
||||
<div class="head green"><span class="head-icon">👤</span>何包</div>
|
||||
<div class="body"><p class="role">电动车创始人</p><p class="topics">泉州1000+车队·民宿酒店渠道·低成本扩张</p></div>
|
||||
</div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num orange">二</span>
|
||||
<span class="section-icon">📌</span>
|
||||
精益介绍
|
||||
</h2>
|
||||
<div class="lean-row"><div class="lean-card orange"><div class="head orange"><span class="lean-icon">📌</span>程序员AI转型:从代码到产品</div><div class="body"><h4>Cursor新功能详解</h4><ul><li>桌面控制能力升级(昨晚新增)</li><li>IDE+可视化界面友好</li><li>公司全员配置使用(含文员)</li></ul><h4>程序员创业陷阱</h4><ul><li>99%创业失败=思维闭环</li><li>技术≠产品≠商业化</li><li>从业比创业稳定百倍</li></ul></div></div>
|
||||
<div class="lean-card blue"><div class="head blue"><span class="lean-icon">✓</span>电动车民宿合作:2万投入年赚百万</div><div class="body"><h4>何包模式拆解</h4><ul><li>与民宿合作摆放电动车</li><li>民宿不出钱,只需展位</li><li>泉州1000+车·月流水400万+</li></ul><h4>厦门落地挑战</h4><ul><li>需要岛内民宿代运营者牵头</li><li>投入:20万覆盖10-20家民宿</li><li>需要执行人·资金only≠项目</li></ul></div></div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">三</span>
|
||||
<span class="section-icon">🕐</span>
|
||||
会议流程
|
||||
</h2>
|
||||
<div class="flow-wrap"><div class="flow-node"><div class="circle blue">🎙️</div><span class="label">开场介绍</span><span class="time">06:00-06:10</span></div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-node"><div class="circle purple">👥</div><span class="label">嘉宾分享</span><span class="time">06:10-07:30</span></div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-node"><div class="circle orange">💡</div><span class="label">干货提炼</span><span class="time">07:30-08:00</span></div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-node"><div class="circle red">🤝</div><span class="label">项目对接</span><span class="time">08:00-08:40</span></div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-node"><div class="circle green">📋</div><span class="label">总结收尾</span><span class="time">08:40-09:00</span></div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num purple">四</span>
|
||||
<span class="section-icon">❓</span>
|
||||
热点研讨
|
||||
</h2>
|
||||
<div class="hot-list"><div class="hot-item">
|
||||
<div class="top-row">
|
||||
<div><span class="signal-tag user">用户观点</span><div class="signal-time">04:40-05:34</div></div>
|
||||
<div class="topic-wrap"><span class="q-icon">Q:</span><span class="topic-title">Cursor电脑控制能力</span></div>
|
||||
</div>
|
||||
<div class="content">昨晚刚升级新版本,增加自动操控电脑界面能力。相比Claude Code的区别在于可视化界面更友好、配置更简单。</div>
|
||||
<div class="key-point"><span class="label">重点</span><br/>信号:工具门槛再次降低,普通大学生培训2周就能达到3-5年经验水平</div>
|
||||
</div>
|
||||
|
||||
<div class="hot-item">
|
||||
<div class="top-row">
|
||||
<div><span class="signal-tag user">用户观点</span><div class="signal-time">18:59-21:59</div></div>
|
||||
<div class="topic-wrap"><span class="q-icon">Q:</span><span class="topic-title">电动车民宿模式复制性</span></div>
|
||||
</div>
|
||||
<div class="content">何包的模式:民宿方零投入,只需门口摆5-10辆电动车。所有成本由何包团队承担。</div>
|
||||
<div class="key-point"><span class="label">重点</span><br/>亮点:投入20万可覆盖10-20家民宿。相对酒店投资低10倍</div>
|
||||
</div>
|
||||
|
||||
<div class="hot-item">
|
||||
<div class="top-row">
|
||||
<div><span class="signal-tag user">用户观点</span><div class="signal-time">30:05-40:59</div></div>
|
||||
<div class="topic-wrap"><span class="q-icon">Q:</span><span class="topic-title">全球债务与AI的必然性</span></div>
|
||||
</div>
|
||||
<div class="content">346万亿债务无法真实还清。央行必然选大通胀+印钱路线。AI就是印钱的理由。</div>
|
||||
<div class="key-point"><span class="label">重点</span><br/>结论:2026年唯一的印钞通行证就是AI</div>
|
||||
</div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">五</span>
|
||||
<span class="section-icon">📋</span>
|
||||
下次分享
|
||||
</h2>
|
||||
<div class="next-grid"><div class="next-card orange"><div class="next-icon">📌</div><div class="title">AI工具链现状</div><div class="desc"><strong>Cursor > Claude Code</strong>:可视化+配置友好+电脑控制</div></div>
|
||||
<div class="next-card blue"><div class="next-icon">🎯</div><div class="title">电动车民宿扩张路径</div><div class="desc"><strong>何包模式:</strong>零成本渠道(民宿不出钱)</div></div>
|
||||
<div class="next-card purple"><div class="next-icon">📋</div><div class="title">待定</div><div class="desc">下期公布</div></div>
|
||||
<div class="next-card red"><div class="next-icon">💡</div><div class="title">待定</div><div class="desc">下期公布</div></div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">六</span>
|
||||
<span class="section-icon">🚀</span>
|
||||
项目推进
|
||||
</h2>
|
||||
<div class="progress-row"><div class="progress-card "><div class="progress-icon">🚀</div><div class="title">项目推进</div><div class="desc">如果你有民宿代运营背景或厦门岛内民宿资源,可以尝试对接何包的电动车项目。投入相对低(20万左右),ROI清晰。<br/><small style="color:#6b7280;">群友何包已准备详细商业计划书,可在派对直接对接</small></div></div>
|
||||
<div class="progress-card blue"><div class="progress-icon">📊</div><div class="title">项目推进</div><div class="desc">现在Cursor等AI工具已成标配。如果还没掌握,可以像文员一样快速上手。懂工具的人现在还是少数。<br/><small style="color:#6b7280;">机会:AI工具链会持续迭代,早学早用早变现</small></div></div></div>
|
||||
</section>
|
||||
|
||||
<footer class="footer">
|
||||
<p>版权所有 © 2026 <span class="brand">Karuo.AI</span></p>
|
||||
<p style="margin-top: 8px;">Power by Karuo.AI · 每天 06:00-09:00 Soul派对直播</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
04_卡火(火)/火眼_智能追问/智能纪要/output/meeting_101_长图.png
Normal file
BIN
04_卡火(火)/火眼_智能追问/智能纪要/output/meeting_101_长图.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 345 KiB |
495
04_卡火(火)/火眼_智能追问/智能纪要/output/meeting_101style_sample.html
Normal file
495
04_卡火(火)/火眼_智能追问/智能纪要/output/meeting_101style_sample.html
Normal file
@@ -0,0 +1,495 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>1月27日|程序员AI工具链×电动车民宿×金融视角 - 卡若派对纪要</title>
|
||||
<style>
|
||||
/* ===== 101场配色体系(与参考图一致)===== */
|
||||
:root {
|
||||
--blue: #2563eb;
|
||||
--blue-light: #dbeafe;
|
||||
--orange-red: #ea580c;
|
||||
--orange-red-light: #ffedd5;
|
||||
--green: #16a34a;
|
||||
--green-light: #dcfce7;
|
||||
--purple: #7c3aed;
|
||||
--purple-light: #ede9fe;
|
||||
--red: #dc2626;
|
||||
--red-light: #fee2e2;
|
||||
--yellow-key: #fef08a;
|
||||
--yellow-key-bg: #fef9c3;
|
||||
--white: #ffffff;
|
||||
--bg-page: #fafafa;
|
||||
--text-primary: #1a1a2e;
|
||||
--text-secondary: #4b5563;
|
||||
--text-muted: #6b7280;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
background: var(--bg-page);
|
||||
min-height: 100vh;
|
||||
color: var(--text-primary);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.container { max-width: 1120px; margin: 0 auto; padding: 32px 28px; }
|
||||
|
||||
/* ========== 区块标题(带图标+色条)========== */
|
||||
.section-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-bottom: 18px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 3px solid transparent;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.section-head .section-num {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
color: #fff;
|
||||
border-radius: 8px;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
.section-head .section-num.blue { background: var(--blue); }
|
||||
.section-head .section-num.orange { background: var(--orange-red); }
|
||||
.section-head .section-num.green { background: var(--green); }
|
||||
.section-head .section-num.purple { background: var(--purple); }
|
||||
.section-head .section-icon { font-size: 1.25rem; opacity: 0.9; }
|
||||
|
||||
/* ========== 顶部标题区 ========== */
|
||||
.header {
|
||||
background: var(--white);
|
||||
border-radius: 16px;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.06);
|
||||
padding: 32px 36px 24px;
|
||||
margin-bottom: 28px;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.header h1 {
|
||||
font-size: 1.75rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.3;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
.header .subtitle {
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 18px;
|
||||
max-width: 720px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
/* 导航标签行(与101场一致:分享人/目标/关键问题/AI复盘)*/
|
||||
.header .nav-tags {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
.header .nav-tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
background: #f3f4f6;
|
||||
color: var(--text-secondary);
|
||||
padding: 8px 14px;
|
||||
border-radius: 22px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.header .nav-tag .nav-icon { font-size: 1rem; }
|
||||
.header .meta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 16px;
|
||||
font-size: 0.88rem;
|
||||
color: var(--text-muted);
|
||||
padding-top: 12px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
/* ========== 一、分享人介绍(四色卡+白底图标+性格/项目标签)========== */
|
||||
.speakers-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.speaker-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.speaker-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: #fff;
|
||||
}
|
||||
.speaker-card .head .head-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
background: rgba(255,255,255,0.25);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.speaker-card .head.blue { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); }
|
||||
.speaker-card .head.orange { background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%); }
|
||||
.speaker-card .head.green { background: linear-gradient(135deg, #16a34a 0%, #15803d 100%); }
|
||||
.speaker-card .head.purple { background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%); }
|
||||
.speaker-card .body { padding: 16px; }
|
||||
.speaker-card .role { font-weight: 700; font-size: 0.9rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.speaker-card .topics { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.5; margin-bottom: 10px; }
|
||||
/* 性格/项目小标签(INTJ、项目、产品等)*/
|
||||
.speaker-card .pills { display: flex; flex-wrap: wrap; gap: 6px; }
|
||||
.speaker-card .pill {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 600;
|
||||
padding: 4px 10px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.speaker-card .pill.blue { background: var(--blue-light); color: #1d4ed8; }
|
||||
.speaker-card .pill.orange { background: var(--orange-red-light); color: #c2410c; }
|
||||
.speaker-card .pill.green { background: var(--green-light); color: #15803d; }
|
||||
.speaker-card .pill.purple { background: var(--purple-light); color: #6d28d9; }
|
||||
.speaker-card .pill.red { background: var(--red-light); color: #b91c1c; }
|
||||
|
||||
/* ========== 二、精益介绍(三卡+图标+项目/产品/运营/商业标签)========== */
|
||||
.lean-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.lean-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
overflow: hidden;
|
||||
border-top: 4px solid var(--blue);
|
||||
}
|
||||
.lean-card.orange { border-top-color: var(--orange-red); }
|
||||
.lean-card.blue { border-top-color: var(--blue); }
|
||||
.lean-card.green { border-top-color: var(--green); }
|
||||
.lean-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: #fff;
|
||||
}
|
||||
.lean-card .head .lean-icon {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
background: rgba(255,255,255,0.3);
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.lean-card .head.orange { background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%); }
|
||||
.lean-card .head.blue { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); }
|
||||
.lean-card .head.green { background: linear-gradient(135deg, #16a34a 0%, #15803d 100%); }
|
||||
.lean-card .body { padding: 16px; }
|
||||
.lean-card h4 { font-size: 0.88rem; font-weight: 700; margin-bottom: 8px; color: var(--text-primary); }
|
||||
.lean-card ul { list-style: none; }
|
||||
.lean-card li {
|
||||
font-size: 0.82rem;
|
||||
padding: 5px 0;
|
||||
padding-left: 16px;
|
||||
position: relative;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
.lean-card li::before { content: "▪"; position: absolute; left: 0; color: var(--text-muted); font-weight: bold; }
|
||||
.lean-card li .inline-tag {
|
||||
display: inline-block;
|
||||
font-size: 0.7rem;
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
margin-right: 4px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.lean-card li .tag-项目 { background: var(--orange-red-light); color: #c2410c; }
|
||||
.lean-card li .tag-产品 { background: var(--blue-light); color: #1d4ed8; }
|
||||
.lean-card li .tag-运营 { background: var(--green-light); color: #15803d; }
|
||||
.lean-card li .tag-商业 { background: var(--red-light); color: #b91c1c; }
|
||||
|
||||
/* ========== 三、会议流程图(彩色圆+白图标+步骤号)========== */
|
||||
.flow-wrap {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 24px 28px;
|
||||
margin-bottom: 32px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
.flow-node {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
min-width: 88px;
|
||||
}
|
||||
.flow-node .circle {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.2rem;
|
||||
color: #fff;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.flow-node .circle.blue { background: var(--blue); }
|
||||
.flow-node .circle.purple { background: var(--purple); }
|
||||
.flow-node .circle.orange { background: var(--orange-red); }
|
||||
.flow-node .circle.red { background: var(--red); }
|
||||
.flow-node .circle.green { background: var(--green); }
|
||||
.flow-node .label { font-size: 0.8rem; font-weight: 700; color: var(--text-primary); text-align: center; }
|
||||
.flow-node .time { font-size: 0.7rem; color: var(--text-muted); margin-top: 2px; }
|
||||
.flow-arrow { color: #cbd5e1; font-size: 1.1rem; font-weight: bold; }
|
||||
|
||||
/* ========== 四、热点研讨(信号标签+时间+Q:+重点黄框)========== */
|
||||
.hot-list { margin-bottom: 32px; }
|
||||
.hot-item {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
margin-bottom: 16px;
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.hot-item .top-row {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 14px;
|
||||
padding: 16px 20px;
|
||||
background: #fafafa;
|
||||
border-bottom: 1px solid #f1f3f4;
|
||||
}
|
||||
/* 左侧信号标签(AI思考/用户观点/专家洞察/AI提问)*/
|
||||
.hot-item .signal-tag {
|
||||
flex-shrink: 0;
|
||||
padding: 6px 12px;
|
||||
border-radius: 8px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
}
|
||||
.hot-item .signal-tag.ai { background: var(--red); }
|
||||
.hot-item .signal-tag.user { background: var(--blue); }
|
||||
.hot-item .signal-tag.expert { background: var(--purple); }
|
||||
.hot-item .signal-tag.question { background: var(--green); }
|
||||
.hot-item .signal-time { font-size: 0.72rem; color: var(--text-muted); margin-top: 4px; }
|
||||
.hot-item .topic-wrap { flex: 1; }
|
||||
.hot-item .topic-wrap .q-icon { color: var(--blue); font-weight: 800; margin-right: 6px; }
|
||||
.hot-item .topic-wrap .topic-title { font-weight: 800; font-size: 1rem; color: var(--text-primary); }
|
||||
.hot-item .content { padding: 16px 20px; font-size: 0.9rem; color: var(--text-secondary); line-height: 1.65; }
|
||||
.hot-item .content ul { margin: 10px 0 0 20px; }
|
||||
.hot-item .content li { margin: 5px 0; }
|
||||
/* 重点(与101场一致的浅黄标签框)*/
|
||||
.hot-item .key-point {
|
||||
margin: 0 20px 16px;
|
||||
padding: 14px 16px;
|
||||
background: var(--yellow-key-bg);
|
||||
border: 1px solid var(--yellow-key);
|
||||
border-radius: 10px;
|
||||
font-size: 0.88rem;
|
||||
font-weight: 600;
|
||||
color: #713f12;
|
||||
}
|
||||
.hot-item .key-point .label {
|
||||
display: inline-block;
|
||||
background: var(--yellow-key);
|
||||
color: #a16207;
|
||||
padding: 3px 10px;
|
||||
border-radius: 6px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 800;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
/* ========== 五、下次分享(2x2 四色卡+图标)========== */
|
||||
.next-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.next-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 20px;
|
||||
border-top: 4px solid var(--orange-red);
|
||||
}
|
||||
.next-card.blue { border-top-color: var(--blue); }
|
||||
.next-card.purple { border-top-color: var(--purple); }
|
||||
.next-card.red { border-top-color: var(--red); }
|
||||
.next-card .next-icon {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.1rem;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.next-card.orange .next-icon { background: var(--orange-red-light); }
|
||||
.next-card.blue .next-icon { background: var(--blue-light); }
|
||||
.next-card.purple .next-icon { background: var(--purple-light); }
|
||||
.next-card.red .next-icon { background: var(--red-light); }
|
||||
.next-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.next-card .desc { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.55; }
|
||||
|
||||
/* ========== 六、项目推进(两卡+绿/蓝)========== */
|
||||
.progress-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.progress-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 20px;
|
||||
border-left: 5px solid var(--green);
|
||||
}
|
||||
.progress-card.blue { border-left-color: var(--blue); }
|
||||
.progress-card .progress-icon { font-size: 1.3rem; margin-bottom: 10px; }
|
||||
.progress-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.progress-card .desc { font-size: 0.85rem; color: var(--text-secondary); line-height: 1.6; }
|
||||
|
||||
/* ========== 页脚 ========== */
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 28px;
|
||||
font-size: 0.82rem;
|
||||
color: var(--text-muted);
|
||||
border-top: 1px solid #e5e7eb;
|
||||
margin-top: 12px;
|
||||
}
|
||||
.footer .brand { color: var(--blue); font-weight: 700; }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.speakers-row { grid-template-columns: repeat(2, 1fr); }
|
||||
.lean-row { grid-template-columns: 1fr; }
|
||||
.next-grid { grid-template-columns: 1fr; }
|
||||
.progress-row { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
.speakers-row { grid-template-columns: 1fr; }
|
||||
.flow-wrap { flex-direction: column; }
|
||||
.flow-arrow { transform: rotate(90deg); }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="header">
|
||||
<h1>1月27日|程序员AI工具链×电动车民宿×金融视角</h1>
|
||||
<p class="subtitle">汇集实操经验与思考,核心关注:提要、细则、方法论、商业与链接。</p>
|
||||
<div class="nav-tags">
|
||||
<span class="nav-tag"><span class="nav-icon">👤</span>分享人</span>
|
||||
<span class="nav-tag"><span class="nav-icon">🎯</span>目标</span>
|
||||
<span class="nav-tag"><span class="nav-icon">❓</span>关键问题</span>
|
||||
<span class="nav-tag"><span class="nav-icon">💡</span>AI复盘</span>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span>⏱ 2小时26分47秒</span>
|
||||
<span>👥 600+</span>
|
||||
<span>📍 Soul派对早场</span>
|
||||
<span>📅 2026-01-27 06:54</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">一</span>
|
||||
<span class="section-icon">👤</span>
|
||||
分享人介绍
|
||||
</h2>
|
||||
<div class="speakers-row">{{#speakers}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num orange">二</span>
|
||||
<span class="section-icon">📌</span>
|
||||
精益介绍
|
||||
</h2>
|
||||
<div class="lean-row">{{#modules}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">三</span>
|
||||
<span class="section-icon">🕐</span>
|
||||
会议流程
|
||||
</h2>
|
||||
<div class="flow-wrap">{{#flow_steps}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num purple">四</span>
|
||||
<span class="section-icon">❓</span>
|
||||
热点研讨
|
||||
</h2>
|
||||
<div class="hot-list">{{#highlights}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">五</span>
|
||||
<span class="section-icon">📋</span>
|
||||
下次分享
|
||||
</h2>
|
||||
<div class="next-grid">{{#next_share}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">六</span>
|
||||
<span class="section-icon">🚀</span>
|
||||
项目推进
|
||||
</h2>
|
||||
<div class="progress-row">{{#actions}}</div>
|
||||
</section>
|
||||
|
||||
<footer class="footer">
|
||||
<p>版权所有 © 2026 <span class="brand">Karuo.AI</span></p>
|
||||
<p style="margin-top: 8px;">Power by Karuo.AI · 每天 06:00-09:00 Soul派对直播</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
04_卡火(火)/火眼_智能追问/智能纪要/output/meeting_101style_sample.png
Normal file
BIN
04_卡火(火)/火眼_智能追问/智能纪要/output/meeting_101style_sample.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 404 KiB |
551
04_卡火(火)/火眼_智能追问/智能纪要/output/soul_派对102场_20260217.html
Normal file
551
04_卡火(火)/火眼_智能追问/智能纪要/output/soul_派对102场_20260217.html
Normal file
@@ -0,0 +1,551 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>2026年2月17日|过年第一个红包发给谁×人生三贵人 - 卡若派对纪要</title>
|
||||
<style>
|
||||
/* ===== 101场配色体系(与参考图一致)===== */
|
||||
:root {
|
||||
--blue: #2563eb;
|
||||
--blue-light: #dbeafe;
|
||||
--orange-red: #ea580c;
|
||||
--orange-red-light: #ffedd5;
|
||||
--green: #16a34a;
|
||||
--green-light: #dcfce7;
|
||||
--purple: #7c3aed;
|
||||
--purple-light: #ede9fe;
|
||||
--red: #dc2626;
|
||||
--red-light: #fee2e2;
|
||||
--yellow-key: #fef08a;
|
||||
--yellow-key-bg: #fef9c3;
|
||||
--white: #ffffff;
|
||||
--bg-page: #fafafa;
|
||||
--text-primary: #1a1a2e;
|
||||
--text-secondary: #4b5563;
|
||||
--text-muted: #6b7280;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
background: var(--bg-page);
|
||||
min-height: 100vh;
|
||||
color: var(--text-primary);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.container { max-width: 1120px; margin: 0 auto; padding: 32px 28px; }
|
||||
|
||||
/* ========== 区块标题(带图标+色条)========== */
|
||||
.section-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-bottom: 18px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 3px solid transparent;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.section-head .section-num {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
color: #fff;
|
||||
border-radius: 8px;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
.section-head .section-num.blue { background: var(--blue); }
|
||||
.section-head .section-num.orange { background: var(--orange-red); }
|
||||
.section-head .section-num.green { background: var(--green); }
|
||||
.section-head .section-num.purple { background: var(--purple); }
|
||||
.section-head .section-icon { font-size: 1.25rem; opacity: 0.9; }
|
||||
|
||||
/* ========== 顶部标题区 ========== */
|
||||
.header {
|
||||
background: var(--white);
|
||||
border-radius: 16px;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.06);
|
||||
padding: 32px 36px 24px;
|
||||
margin-bottom: 28px;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.header h1 {
|
||||
font-size: 1.75rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.3;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
.header .subtitle {
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 18px;
|
||||
max-width: 720px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
/* 导航标签行(与101场一致:分享人/目标/关键问题/AI复盘)*/
|
||||
.header .nav-tags {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
.header .nav-tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
background: #f3f4f6;
|
||||
color: var(--text-secondary);
|
||||
padding: 8px 14px;
|
||||
border-radius: 22px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.header .nav-tag .nav-icon { font-size: 1rem; }
|
||||
.header .meta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 16px;
|
||||
font-size: 0.88rem;
|
||||
color: var(--text-muted);
|
||||
padding-top: 12px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
/* ========== 一、分享人介绍(四色卡+白底图标+性格/项目标签)========== */
|
||||
.speakers-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.speaker-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.speaker-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: #fff;
|
||||
}
|
||||
.speaker-card .head .head-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
background: rgba(255,255,255,0.25);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.speaker-card .head.blue { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); }
|
||||
.speaker-card .head.orange { background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%); }
|
||||
.speaker-card .head.green { background: linear-gradient(135deg, #16a34a 0%, #15803d 100%); }
|
||||
.speaker-card .head.purple { background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%); }
|
||||
.speaker-card .body { padding: 16px; }
|
||||
.speaker-card .role { font-weight: 700; font-size: 0.9rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.speaker-card .topics { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.5; margin-bottom: 10px; }
|
||||
/* 性格/项目小标签(INTJ、项目、产品等)*/
|
||||
.speaker-card .pills { display: flex; flex-wrap: wrap; gap: 6px; }
|
||||
.speaker-card .pill {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 600;
|
||||
padding: 4px 10px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.speaker-card .pill.blue { background: var(--blue-light); color: #1d4ed8; }
|
||||
.speaker-card .pill.orange { background: var(--orange-red-light); color: #c2410c; }
|
||||
.speaker-card .pill.green { background: var(--green-light); color: #15803d; }
|
||||
.speaker-card .pill.purple { background: var(--purple-light); color: #6d28d9; }
|
||||
.speaker-card .pill.red { background: var(--red-light); color: #b91c1c; }
|
||||
|
||||
/* ========== 二、精益介绍(三卡+图标+项目/产品/运营/商业标签)========== */
|
||||
.lean-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.lean-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
overflow: hidden;
|
||||
border-top: 4px solid var(--blue);
|
||||
}
|
||||
.lean-card.orange { border-top-color: var(--orange-red); }
|
||||
.lean-card.blue { border-top-color: var(--blue); }
|
||||
.lean-card.green { border-top-color: var(--green); }
|
||||
.lean-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: #fff;
|
||||
}
|
||||
.lean-card .head .lean-icon {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
background: rgba(255,255,255,0.3);
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.lean-card .head.orange { background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%); }
|
||||
.lean-card .head.blue { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); }
|
||||
.lean-card .head.green { background: linear-gradient(135deg, #16a34a 0%, #15803d 100%); }
|
||||
.lean-card .body { padding: 16px; }
|
||||
.lean-card h4 { font-size: 0.88rem; font-weight: 700; margin-bottom: 8px; color: var(--text-primary); }
|
||||
.lean-card ul { list-style: none; }
|
||||
.lean-card li {
|
||||
font-size: 0.82rem;
|
||||
padding: 5px 0;
|
||||
padding-left: 16px;
|
||||
position: relative;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
.lean-card li::before { content: "▪"; position: absolute; left: 0; color: var(--text-muted); font-weight: bold; }
|
||||
.lean-card li .inline-tag {
|
||||
display: inline-block;
|
||||
font-size: 0.7rem;
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
margin-right: 4px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.lean-card li .tag-项目 { background: var(--orange-red-light); color: #c2410c; }
|
||||
.lean-card li .tag-产品 { background: var(--blue-light); color: #1d4ed8; }
|
||||
.lean-card li .tag-运营 { background: var(--green-light); color: #15803d; }
|
||||
.lean-card li .tag-商业 { background: var(--red-light); color: #b91c1c; }
|
||||
|
||||
/* ========== 三、会议流程图(彩色圆+白图标+步骤号)========== */
|
||||
.flow-wrap {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 24px 28px;
|
||||
margin-bottom: 32px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
.flow-node {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
min-width: 88px;
|
||||
}
|
||||
.flow-node .circle {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.2rem;
|
||||
color: #fff;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.flow-node .circle.blue { background: var(--blue); }
|
||||
.flow-node .circle.purple { background: var(--purple); }
|
||||
.flow-node .circle.orange { background: var(--orange-red); }
|
||||
.flow-node .circle.red { background: var(--red); }
|
||||
.flow-node .circle.green { background: var(--green); }
|
||||
.flow-node .label { font-size: 0.8rem; font-weight: 700; color: var(--text-primary); text-align: center; }
|
||||
.flow-node .time { font-size: 0.7rem; color: var(--text-muted); margin-top: 2px; }
|
||||
.flow-arrow { color: #cbd5e1; font-size: 1.1rem; font-weight: bold; }
|
||||
|
||||
/* ========== 四、热点研讨(信号标签+时间+Q:+重点黄框)========== */
|
||||
.hot-list { margin-bottom: 32px; }
|
||||
.hot-item {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
margin-bottom: 16px;
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.hot-item .top-row {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 14px;
|
||||
padding: 16px 20px;
|
||||
background: #fafafa;
|
||||
border-bottom: 1px solid #f1f3f4;
|
||||
}
|
||||
/* 左侧信号标签(AI思考/用户观点/专家洞察/AI提问)*/
|
||||
.hot-item .signal-tag {
|
||||
flex-shrink: 0;
|
||||
padding: 6px 12px;
|
||||
border-radius: 8px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
}
|
||||
.hot-item .signal-tag.ai { background: var(--red); }
|
||||
.hot-item .signal-tag.user { background: var(--blue); }
|
||||
.hot-item .signal-tag.expert { background: var(--purple); }
|
||||
.hot-item .signal-tag.question { background: var(--green); }
|
||||
.hot-item .signal-time { font-size: 0.72rem; color: var(--text-muted); margin-top: 4px; }
|
||||
.hot-item .topic-wrap { flex: 1; }
|
||||
.hot-item .topic-wrap .q-icon { color: var(--blue); font-weight: 800; margin-right: 6px; }
|
||||
.hot-item .topic-wrap .topic-title { font-weight: 800; font-size: 1rem; color: var(--text-primary); }
|
||||
.hot-item .content { padding: 16px 20px; font-size: 0.9rem; color: var(--text-secondary); line-height: 1.65; }
|
||||
.hot-item .content ul { margin: 10px 0 0 20px; }
|
||||
.hot-item .content li { margin: 5px 0; }
|
||||
/* 重点(与101场一致的浅黄标签框)*/
|
||||
.hot-item .key-point {
|
||||
margin: 0 20px 16px;
|
||||
padding: 14px 16px;
|
||||
background: var(--yellow-key-bg);
|
||||
border: 1px solid var(--yellow-key);
|
||||
border-radius: 10px;
|
||||
font-size: 0.88rem;
|
||||
font-weight: 600;
|
||||
color: #713f12;
|
||||
}
|
||||
.hot-item .key-point .label {
|
||||
display: inline-block;
|
||||
background: var(--yellow-key);
|
||||
color: #a16207;
|
||||
padding: 3px 10px;
|
||||
border-radius: 6px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 800;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
/* ========== 五、下次分享(2x2 四色卡+图标)========== */
|
||||
.next-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.next-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 20px;
|
||||
border-top: 4px solid var(--orange-red);
|
||||
}
|
||||
.next-card.blue { border-top-color: var(--blue); }
|
||||
.next-card.purple { border-top-color: var(--purple); }
|
||||
.next-card.red { border-top-color: var(--red); }
|
||||
.next-card .next-icon {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.1rem;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.next-card.orange .next-icon { background: var(--orange-red-light); }
|
||||
.next-card.blue .next-icon { background: var(--blue-light); }
|
||||
.next-card.purple .next-icon { background: var(--purple-light); }
|
||||
.next-card.red .next-icon { background: var(--red-light); }
|
||||
.next-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.next-card .desc { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.55; }
|
||||
|
||||
/* ========== 六、项目推进(两卡+绿/蓝)========== */
|
||||
.progress-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.progress-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 20px;
|
||||
border-left: 5px solid var(--green);
|
||||
}
|
||||
.progress-card.blue { border-left-color: var(--blue); }
|
||||
.progress-card .progress-icon { font-size: 1.3rem; margin-bottom: 10px; }
|
||||
.progress-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.progress-card .desc { font-size: 0.85rem; color: var(--text-secondary); line-height: 1.6; }
|
||||
|
||||
/* ========== 页脚 ========== */
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 28px;
|
||||
font-size: 0.82rem;
|
||||
color: var(--text-muted);
|
||||
border-top: 1px solid #e5e7eb;
|
||||
margin-top: 12px;
|
||||
}
|
||||
.footer .brand { color: var(--blue); font-weight: 700; }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.speakers-row { grid-template-columns: repeat(2, 1fr); }
|
||||
.lean-row { grid-template-columns: 1fr; }
|
||||
.next-grid { grid-template-columns: 1fr; }
|
||||
.progress-row { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
.speakers-row { grid-template-columns: 1fr; }
|
||||
.flow-wrap { flex-direction: column; }
|
||||
.flow-arrow { transform: rotate(90deg); }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="header">
|
||||
<h1>2026年2月17日|过年第一个红包发给谁×人生三贵人</h1>
|
||||
<p class="subtitle">汇集实操经验与思考,核心关注:提要、细则、方法论、商业与链接。</p>
|
||||
<div class="nav-tags">
|
||||
<span class="nav-tag"><span class="nav-icon">👤</span>分享人</span>
|
||||
<span class="nav-tag"><span class="nav-icon">🎯</span>目标</span>
|
||||
<span class="nav-tag"><span class="nav-icon">❓</span>关键问题</span>
|
||||
<span class="nav-tag"><span class="nav-icon">💡</span>AI复盘</span>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span>⏱ 50分钟42秒</span>
|
||||
<span>👥 94+</span>
|
||||
<span>📍 Soul派对早场</span>
|
||||
<span>📅 2026-02-17 8:01</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">一</span>
|
||||
<span class="section-icon">👤</span>
|
||||
分享人介绍
|
||||
</h2>
|
||||
<div class="speakers-row"><div class="speaker-card">
|
||||
<div class="head blue"><span class="head-icon">👤</span>主持人</div>
|
||||
<div class="body"><p class="role">派对主理·102场</p><p class="topics">红包与贵人·无我利他·伴侣与决策</p></div>
|
||||
</div>
|
||||
|
||||
<div class="speaker-card">
|
||||
<div class="head orange"><span class="head-icon">👤</span>群友</div>
|
||||
<div class="body"><p class="role">互动分享</p><p class="topics">收获与付出·红包是心意·亲密付</p></div>
|
||||
</div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num orange">二</span>
|
||||
<span class="section-icon">📌</span>
|
||||
精益介绍
|
||||
</h2>
|
||||
<div class="lean-row"><div class="lean-card orange"><div class="head orange"><span class="lean-icon">📌</span>人生三贵人:引路人·皮鞭·后盾</div><div class="body"><h4>第一个贵人</h4><ul><li>亏过一个亿的男人,13年做收银机/美团模式、太早做市场</li><li>认知很高,带来思维启发与优质人脉</li><li>引路人型:泡茶聊天时直接给解决方案、有求必应</li></ul><h4>第二个贵人</h4><ul><li>樊登福建区负责人,皮鞭型</li><li>决策不对时敢提、敢说:这事可能不对</li><li>人生只做一件最重要的事</li></ul></div></div>
|
||||
<div class="lean-card blue"><div class="head blue"><span class="lean-icon">✓</span>红包与链接</div><div class="body"><h4>红包类型</h4><ul><li>心意型:9块9也开心,表达气氛、无经济压力</li><li>建联型:礼尚往来、建立联系</li><li>交易型:有的不收,收了等于承诺、要资源要场地的不收</li></ul><h4>原则</h4><ul><li>付出时忘掉自己、无我利他,回馈自然来</li><li>照顾好自己的前提下,优先身边人</li><li>红包可用亲密付(发现新大陆)</li></ul></div></div>
|
||||
<div class="lean-card green"><div class="head green"><span class="lean-icon">⚙️</span>Soul与派对</div><div class="body"><h4>102场体会</h4><ul><li>大机会:一线供应链、真心话、多视角</li><li>第一波10人很容易稳住,梯度机制</li><li>每天做会议纪要发群;总结很重要</li></ul></div></div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">三</span>
|
||||
<span class="section-icon">🕐</span>
|
||||
会议流程
|
||||
</h2>
|
||||
<div class="flow-wrap"><div class="flow-node"><div class="circle blue">🎙️</div><span class="label">开场介绍</span><span class="time">06:00-06:10</span></div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-node"><div class="circle purple">👥</div><span class="label">嘉宾分享</span><span class="time">06:10-07:30</span></div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-node"><div class="circle orange">💡</div><span class="label">干货提炼</span><span class="time">07:30-08:00</span></div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-node"><div class="circle red">🤝</div><span class="label">项目对接</span><span class="time">08:00-08:40</span></div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-node"><div class="circle green">📋</div><span class="label">总结收尾</span><span class="time">08:40-09:00</span></div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num purple">四</span>
|
||||
<span class="section-icon">❓</span>
|
||||
热点研讨
|
||||
</h2>
|
||||
<div class="hot-list"><div class="hot-item">
|
||||
<div class="top-row">
|
||||
<div><span class="signal-tag user">用户观点</span><div class="signal-time">17:04-23:00</div></div>
|
||||
<div class="topic-wrap"><span class="q-icon">Q:</span><span class="topic-title">三个贵人:引路人·皮鞭·后盾</span></div>
|
||||
</div>
|
||||
<div class="content">今年红包只发三人:引路人(亏过一个亿、认知高人脉好)、皮鞭(樊登福建负责人、敢纠偏决策)、后盾(老婆、财务生活全管)。顺序对外利他型,对内伴侣第一。</div>
|
||||
<div class="key-point"><span class="label">重点</span><br/>贵人不是数量,是角色分工:给视野、给纠偏、给兜底。离自己近的人优先,永远的原则。</div>
|
||||
</div>
|
||||
|
||||
<div class="hot-item">
|
||||
<div class="top-row">
|
||||
<div><span class="signal-tag user">用户观点</span><div class="signal-time">28:46-30:02</div></div>
|
||||
<div class="topic-wrap"><span class="q-icon">Q:</span><span class="topic-title">红包是心意不是金额</span></div>
|
||||
</div>
|
||||
<div class="content">微信设200元上限的本意是双方无经济压力,表达节日气氛。9块9也很开心。红包可以用亲密付。</div>
|
||||
<div class="key-point"><span class="label">重点</span><br/>心意>金额。设上限恰恰是让人敢发、对方敢收,关系不异化为交易。</div>
|
||||
</div>
|
||||
|
||||
<div class="hot-item">
|
||||
<div class="top-row">
|
||||
<div><span class="signal-tag user">用户观点</span><div class="signal-time">26:01-27:15</div></div>
|
||||
<div class="topic-wrap"><span class="q-icon">Q:</span><span class="topic-title">无我利他才有回馈</span></div>
|
||||
</div>
|
||||
<div class="content">付出时把自己忘掉,不想自己的事,慢慢就有回馈。他们来找我泡茶、有需求,我直接帮解决;我只要他们的视角给我看不到的东西。</div>
|
||||
<div class="key-point"><span class="label">重点</span><br/>收获一定伴随付出,但付出时若算计回报就有阻碍。给解决方案、有求必应,换视角与链接。</div>
|
||||
</div>
|
||||
|
||||
<div class="hot-item">
|
||||
<div class="top-row">
|
||||
<div><span class="signal-tag user">用户观点</span><div class="signal-time">35:14-41:43</div></div>
|
||||
<div class="topic-wrap"><span class="q-icon">Q:</span><span class="topic-title">伴侣相处:迭代与三个卡点</span></div>
|
||||
</div>
|
||||
<div class="content">不内耗、秒道歉;两人要迭代、update。出去找地方摊开讲三个卡点(如加工资未统一、人的问题),每人说三件,解决盲区。先认错、再谈事。</div>
|
||||
<div class="key-point"><span class="label">重点</span><br/>关系要迭代。卡点列出来直接讲,事归事、人归人;伴侣会沟通、不积压,才能不内耗往前冲。</div>
|
||||
</div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">五</span>
|
||||
<span class="section-icon">📋</span>
|
||||
下次分享
|
||||
</h2>
|
||||
<div class="next-grid"><div class="next-card orange"><div class="next-icon">📌</div><div class="title">红包与贵人</div><div class="desc"><strong>三贵人:</strong>引路人(视野+人脉)、皮鞭(纠偏决策)、后盾(生活+财务)</div></div>
|
||||
<div class="next-card blue"><div class="next-icon">🎯</div><div class="title">伴侣与决策</div><div class="desc"><strong>不内耗:</strong>秒道歉、要迭代,卡点摊开讲</div></div>
|
||||
<div class="next-card purple"><div class="next-icon">📋</div><div class="title">待定</div><div class="desc">下期公布</div></div>
|
||||
<div class="next-card red"><div class="next-icon">💡</div><div class="title">待定</div><div class="desc">下期公布</div></div></div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">六</span>
|
||||
<span class="section-icon">🚀</span>
|
||||
项目推进
|
||||
</h2>
|
||||
<div class="progress-row"><div class="progress-card "><div class="progress-icon">🚀</div><div class="title">项目推进</div><div class="desc">把人生三贵人写成文章发出去,加深链接。红包发完可借回馈时机聊几句。<br/><small style="color:#6b7280;">今日已发老婆;另两位等起来再发,发时顺便聊天</small></div></div>
|
||||
<div class="progress-card blue"><div class="progress-icon">📊</div><div class="title">项目推进</div><div class="desc">每天会议纪要发群,102场继续做总结。关注订阅群主,不然看不到派对。<br/><small style="color:#6b7280;">Soul第一波10人易稳住,有梯度;多视角、一线供应链是机会</small></div></div></div>
|
||||
</section>
|
||||
|
||||
<footer class="footer">
|
||||
<p>版权所有 © 2026 <span class="brand">Karuo.AI</span></p>
|
||||
<p style="margin-top: 8px;">Power by Karuo.AI · 每天 06:00-09:00 Soul派对直播</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
04_卡火(火)/火眼_智能追问/智能纪要/output/soul_派对102场_20260217.png
Normal file
BIN
04_卡火(火)/火眼_智能追问/智能纪要/output/soul_派对102场_20260217.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 458 KiB |
@@ -5,388 +5,490 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{title}} - 卡若派对纪要</title>
|
||||
<style>
|
||||
/* ===== 101场配色体系(与参考图一致)===== */
|
||||
:root {
|
||||
--blue: #2563eb;
|
||||
--blue-light: #dbeafe;
|
||||
--orange-red: #ea580c;
|
||||
--orange-red-light: #ffedd5;
|
||||
--green: #16a34a;
|
||||
--green-light: #dcfce7;
|
||||
--purple: #7c3aed;
|
||||
--purple-light: #ede9fe;
|
||||
--red: #dc2626;
|
||||
--red-light: #fee2e2;
|
||||
--yellow-key: #fef08a;
|
||||
--yellow-key-bg: #fef9c3;
|
||||
--white: #ffffff;
|
||||
--bg-page: #fafafa;
|
||||
--text-primary: #1a1a2e;
|
||||
--text-secondary: #4b5563;
|
||||
--text-muted: #6b7280;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
||||
background: radial-gradient(at 20% 20%, rgba(168, 85, 247, 0.15) 0%, transparent 50%),
|
||||
radial-gradient(at 80% 20%, rgba(59, 130, 246, 0.12) 0%, transparent 50%),
|
||||
radial-gradient(at 40% 80%, rgba(34, 197, 94, 0.1) 0%, transparent 50%),
|
||||
radial-gradient(at 90% 70%, rgba(244, 114, 182, 0.08) 0%, transparent 50%),
|
||||
linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
background: var(--bg-page);
|
||||
min-height: 100vh;
|
||||
color: #1a1a1a;
|
||||
line-height: 1.6;
|
||||
color: var(--text-primary);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.container { max-width: 1200px; margin: 0 auto; padding: 24px; }
|
||||
.container { max-width: 1120px; margin: 0 auto; padding: 32px 28px; }
|
||||
|
||||
/* 毛玻璃基础样式 */
|
||||
.glass {
|
||||
background: rgba(255, 255, 255, 0.7);
|
||||
backdrop-filter: blur(20px);
|
||||
-webkit-backdrop-filter: blur(20px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.glass-card {
|
||||
background: rgba(255, 255, 255, 0.65);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.4);
|
||||
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05);
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* 颜色变体 */
|
||||
.glass-blue {
|
||||
background: linear-gradient(135deg, rgba(59, 130, 246, 0.12) 0%, rgba(59, 130, 246, 0.06) 100%);
|
||||
border: 1px solid rgba(59, 130, 246, 0.25);
|
||||
}
|
||||
.glass-green {
|
||||
background: linear-gradient(135deg, rgba(34, 197, 94, 0.12) 0%, rgba(34, 197, 94, 0.06) 100%);
|
||||
border: 1px solid rgba(34, 197, 94, 0.25);
|
||||
}
|
||||
.glass-purple {
|
||||
background: linear-gradient(135deg, rgba(168, 85, 247, 0.12) 0%, rgba(168, 85, 247, 0.06) 100%);
|
||||
border: 1px solid rgba(168, 85, 247, 0.25);
|
||||
}
|
||||
.glass-orange {
|
||||
background: linear-gradient(135deg, rgba(249, 115, 22, 0.12) 0%, rgba(249, 115, 22, 0.06) 100%);
|
||||
border: 1px solid rgba(249, 115, 22, 0.25);
|
||||
}
|
||||
.glass-red {
|
||||
background: linear-gradient(135deg, rgba(239, 68, 68, 0.12) 0%, rgba(239, 68, 68, 0.06) 100%);
|
||||
border: 1px solid rgba(239, 68, 68, 0.25);
|
||||
}
|
||||
.glass-yellow {
|
||||
background: linear-gradient(135deg, rgba(234, 179, 8, 0.12) 0%, rgba(234, 179, 8, 0.06) 100%);
|
||||
border: 1px solid rgba(234, 179, 8, 0.25);
|
||||
}
|
||||
.glass-pink {
|
||||
background: linear-gradient(135deg, rgba(244, 114, 182, 0.12) 0%, rgba(244, 114, 182, 0.06) 100%);
|
||||
border: 1px solid rgba(244, 114, 182, 0.25);
|
||||
}
|
||||
.glass-teal {
|
||||
background: linear-gradient(135deg, rgba(20, 184, 166, 0.12) 0%, rgba(20, 184, 166, 0.06) 100%);
|
||||
border: 1px solid rgba(20, 184, 166, 0.25);
|
||||
}
|
||||
.glass-indigo {
|
||||
background: linear-gradient(135deg, rgba(99, 102, 241, 0.12) 0%, rgba(99, 102, 241, 0.06) 100%);
|
||||
border: 1px solid rgba(99, 102, 241, 0.25);
|
||||
}
|
||||
.glass-gray {
|
||||
background: rgba(248, 250, 252, 0.8);
|
||||
border: 1px solid rgba(148, 163, 184, 0.2);
|
||||
}
|
||||
|
||||
/* Header */
|
||||
.header {
|
||||
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #f1f5f9 100%);
|
||||
padding: 32px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
.header h1 { font-size: 2rem; font-weight: 700; margin-bottom: 8px; }
|
||||
.header .subtitle { font-size: 1.1rem; color: #64748b; margin-bottom: 16px; }
|
||||
.header .meta { display: flex; flex-wrap: wrap; gap: 12px; }
|
||||
.header .meta-item {
|
||||
background: rgba(255,255,255,0.7);
|
||||
backdrop-filter: blur(8px);
|
||||
padding: 8px 16px;
|
||||
border-radius: 8px;
|
||||
font-size: 0.9rem;
|
||||
border: 1px solid rgba(255,255,255,0.4);
|
||||
}
|
||||
|
||||
/* 流程图 */
|
||||
.flow-chart {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 20px;
|
||||
margin-bottom: 24px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.flow-step {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 10px 16px;
|
||||
background: rgba(255,255,255,0.8);
|
||||
border-radius: 8px;
|
||||
font-size: 0.85rem;
|
||||
font-weight: 500;
|
||||
border: 1px solid rgba(0,0,0,0.08);
|
||||
}
|
||||
.flow-step .icon { font-size: 1.1rem; }
|
||||
.flow-arrow { color: #94a3b8; font-size: 1.2rem; }
|
||||
|
||||
/* Section */
|
||||
.section { margin-bottom: 24px; }
|
||||
.section-title {
|
||||
/* ========== 区块标题(带图标+色条)========== */
|
||||
.section-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
font-size: 1.25rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 8px;
|
||||
border-bottom: 2px solid #e2e8f0;
|
||||
margin-bottom: 18px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 3px solid transparent;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.section-title .icon { font-size: 1.4rem; }
|
||||
.section-title .num {
|
||||
.section-head .section-num {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);
|
||||
color: white;
|
||||
border-radius: 50%;
|
||||
font-size: 0.85rem;
|
||||
font-weight: 700;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
color: #fff;
|
||||
border-radius: 8px;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
.section-head .section-num.blue { background: var(--blue); }
|
||||
.section-head .section-num.orange { background: var(--orange-red); }
|
||||
.section-head .section-num.green { background: var(--green); }
|
||||
.section-head .section-num.purple { background: var(--purple); }
|
||||
.section-head .section-icon { font-size: 1.25rem; opacity: 0.9; }
|
||||
|
||||
/* Grid */
|
||||
.grid { display: grid; gap: 16px; }
|
||||
.grid-2 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
|
||||
.grid-3 { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
|
||||
|
||||
/* Speaker Card */
|
||||
.speaker-card {
|
||||
padding: 16px;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
/* ========== 顶部标题区 ========== */
|
||||
.header {
|
||||
background: var(--white);
|
||||
border-radius: 16px;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.06);
|
||||
padding: 32px 36px 24px;
|
||||
margin-bottom: 28px;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.speaker-card:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 30px rgba(0,0,0,0.08);
|
||||
}
|
||||
.speaker-card .name { font-weight: 700; color: #1a1a1a; }
|
||||
.speaker-card .role { font-size: 0.85rem; color: #64748b; }
|
||||
.speaker-card .topics { font-size: 0.8rem; color: #94a3b8; margin-top: 4px; }
|
||||
|
||||
/* Module Card */
|
||||
.module-card { padding: 20px; }
|
||||
.module-card h4 { font-weight: 600; margin-bottom: 12px; }
|
||||
.module-card ul { list-style: none; }
|
||||
.module-card li {
|
||||
font-size: 0.9rem;
|
||||
padding: 4px 0;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
}
|
||||
.module-card li::before {
|
||||
content: "✓";
|
||||
color: #22c55e;
|
||||
font-weight: bold;
|
||||
}
|
||||
.module-card li.negative::before {
|
||||
content: "✗";
|
||||
color: #ef4444;
|
||||
}
|
||||
|
||||
/* Highlight Card */
|
||||
.highlight-card {
|
||||
padding: 20px;
|
||||
.header h1 {
|
||||
font-size: 1.75rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.3;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
.highlight-card .header-row {
|
||||
.header .subtitle {
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 18px;
|
||||
max-width: 720px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
/* 导航标签行(与101场一致:分享人/目标/关键问题/AI复盘)*/
|
||||
.header .nav-tags {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 8px;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
.highlight-card h4 { font-weight: 700; }
|
||||
.highlight-card .time {
|
||||
font-size: 0.75rem;
|
||||
padding: 4px 8px;
|
||||
border-radius: 4px;
|
||||
background: rgba(0,0,0,0.05);
|
||||
.header .nav-tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
background: #f3f4f6;
|
||||
color: var(--text-secondary);
|
||||
padding: 8px 14px;
|
||||
border-radius: 22px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
.highlight-card .content { font-size: 0.9rem; margin-bottom: 8px; }
|
||||
.highlight-card .insight {
|
||||
font-size: 0.8rem;
|
||||
color: #64748b;
|
||||
padding-top: 8px;
|
||||
border-top: 1px dashed rgba(0,0,0,0.1);
|
||||
.header .nav-tag .nav-icon { font-size: 1rem; }
|
||||
.header .meta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 16px;
|
||||
font-size: 0.88rem;
|
||||
color: var(--text-muted);
|
||||
padding-top: 12px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
/* Takeaway Card - 单行对齐 */
|
||||
.takeaway-card { padding: 20px; }
|
||||
.takeaway-card h4 { font-weight: 700; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }
|
||||
.takeaway-card ul { list-style: none; }
|
||||
.takeaway-card li {
|
||||
font-size: 0.85rem;
|
||||
padding: 8px 0;
|
||||
border-bottom: 1px solid rgba(0,0,0,0.05);
|
||||
/* ========== 一、分享人介绍(四色卡+白底图标+性格/项目标签)========== */
|
||||
.speakers-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.speaker-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.speaker-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: #fff;
|
||||
}
|
||||
.takeaway-card li:last-child { border-bottom: none; }
|
||||
.takeaway-card li strong { color: #1a1a1a; min-width: 100px; }
|
||||
.speaker-card .head .head-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
background: rgba(255,255,255,0.25);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.speaker-card .head.blue { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); }
|
||||
.speaker-card .head.orange { background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%); }
|
||||
.speaker-card .head.green { background: linear-gradient(135deg, #16a34a 0%, #15803d 100%); }
|
||||
.speaker-card .head.purple { background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%); }
|
||||
.speaker-card .body { padding: 16px; }
|
||||
.speaker-card .role { font-weight: 700; font-size: 0.9rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.speaker-card .topics { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.5; margin-bottom: 10px; }
|
||||
/* 性格/项目小标签(INTJ、项目、产品等)*/
|
||||
.speaker-card .pills { display: flex; flex-wrap: wrap; gap: 6px; }
|
||||
.speaker-card .pill {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 600;
|
||||
padding: 4px 10px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.speaker-card .pill.blue { background: var(--blue-light); color: #1d4ed8; }
|
||||
.speaker-card .pill.orange { background: var(--orange-red-light); color: #c2410c; }
|
||||
.speaker-card .pill.green { background: var(--green-light); color: #15803d; }
|
||||
.speaker-card .pill.purple { background: var(--purple-light); color: #6d28d9; }
|
||||
.speaker-card .pill.red { background: var(--red-light); color: #b91c1c; }
|
||||
|
||||
/* Action Card */
|
||||
.action-card {
|
||||
/* ========== 二、精益介绍(三卡+图标+项目/产品/运营/商业标签)========== */
|
||||
.lean-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.lean-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
overflow: hidden;
|
||||
border-top: 4px solid var(--blue);
|
||||
}
|
||||
.lean-card.orange { border-top-color: var(--orange-red); }
|
||||
.lean-card.blue { border-top-color: var(--blue); }
|
||||
.lean-card.green { border-top-color: var(--green); }
|
||||
.lean-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: #fff;
|
||||
}
|
||||
.lean-card .head .lean-icon {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
background: rgba(255,255,255,0.3);
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.lean-card .head.orange { background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%); }
|
||||
.lean-card .head.blue { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); }
|
||||
.lean-card .head.green { background: linear-gradient(135deg, #16a34a 0%, #15803d 100%); }
|
||||
.lean-card .body { padding: 16px; }
|
||||
.lean-card h4 { font-size: 0.88rem; font-weight: 700; margin-bottom: 8px; color: var(--text-primary); }
|
||||
.lean-card ul { list-style: none; }
|
||||
.lean-card li {
|
||||
font-size: 0.82rem;
|
||||
padding: 5px 0;
|
||||
padding-left: 16px;
|
||||
position: relative;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
.lean-card li::before { content: "▪"; position: absolute; left: 0; color: var(--text-muted); font-weight: bold; }
|
||||
.lean-card li .inline-tag {
|
||||
display: inline-block;
|
||||
font-size: 0.7rem;
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
margin-right: 4px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.lean-card li .tag-项目 { background: var(--orange-red-light); color: #c2410c; }
|
||||
.lean-card li .tag-产品 { background: var(--blue-light); color: #1d4ed8; }
|
||||
.lean-card li .tag-运营 { background: var(--green-light); color: #15803d; }
|
||||
.lean-card li .tag-商业 { background: var(--red-light); color: #b91c1c; }
|
||||
|
||||
/* ========== 三、会议流程图(彩色圆+白图标+步骤号)========== */
|
||||
.flow-wrap {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 24px 28px;
|
||||
margin-bottom: 32px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
.flow-node {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
min-width: 88px;
|
||||
}
|
||||
.flow-node .circle {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.2rem;
|
||||
color: #fff;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.flow-node .circle.blue { background: var(--blue); }
|
||||
.flow-node .circle.purple { background: var(--purple); }
|
||||
.flow-node .circle.orange { background: var(--orange-red); }
|
||||
.flow-node .circle.red { background: var(--red); }
|
||||
.flow-node .circle.green { background: var(--green); }
|
||||
.flow-node .label { font-size: 0.8rem; font-weight: 700; color: var(--text-primary); text-align: center; }
|
||||
.flow-node .time { font-size: 0.7rem; color: var(--text-muted); margin-top: 2px; }
|
||||
.flow-arrow { color: #cbd5e1; font-size: 1.1rem; font-weight: bold; }
|
||||
|
||||
/* ========== 四、热点研讨(信号标签+时间+Q:+重点黄框)========== */
|
||||
.hot-list { margin-bottom: 32px; }
|
||||
.hot-item {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
margin-bottom: 16px;
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
}
|
||||
.hot-item .top-row {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 14px;
|
||||
padding: 16px 20px;
|
||||
background: #fafafa;
|
||||
border-bottom: 1px solid #f1f3f4;
|
||||
}
|
||||
/* 左侧信号标签(AI思考/用户观点/专家洞察/AI提问)*/
|
||||
.hot-item .signal-tag {
|
||||
flex-shrink: 0;
|
||||
padding: 6px 12px;
|
||||
border-radius: 8px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
}
|
||||
.hot-item .signal-tag.ai { background: var(--red); }
|
||||
.hot-item .signal-tag.user { background: var(--blue); }
|
||||
.hot-item .signal-tag.expert { background: var(--purple); }
|
||||
.hot-item .signal-tag.question { background: var(--green); }
|
||||
.hot-item .signal-time { font-size: 0.72rem; color: var(--text-muted); margin-top: 4px; }
|
||||
.hot-item .topic-wrap { flex: 1; }
|
||||
.hot-item .topic-wrap .q-icon { color: var(--blue); font-weight: 800; margin-right: 6px; }
|
||||
.hot-item .topic-wrap .topic-title { font-weight: 800; font-size: 1rem; color: var(--text-primary); }
|
||||
.hot-item .content { padding: 16px 20px; font-size: 0.9rem; color: var(--text-secondary); line-height: 1.65; }
|
||||
.hot-item .content ul { margin: 10px 0 0 20px; }
|
||||
.hot-item .content li { margin: 5px 0; }
|
||||
/* 重点(与101场一致的浅黄标签框)*/
|
||||
.hot-item .key-point {
|
||||
margin: 0 20px 16px;
|
||||
padding: 14px 16px;
|
||||
background: var(--yellow-key-bg);
|
||||
border: 1px solid var(--yellow-key);
|
||||
border-radius: 10px;
|
||||
font-size: 0.88rem;
|
||||
font-weight: 600;
|
||||
color: #713f12;
|
||||
}
|
||||
.hot-item .key-point .label {
|
||||
display: inline-block;
|
||||
background: var(--yellow-key);
|
||||
color: #a16207;
|
||||
padding: 3px 10px;
|
||||
border-radius: 6px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 800;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
/* ========== 五、下次分享(2x2 四色卡+图标)========== */
|
||||
.next-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.next-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 20px;
|
||||
border-top: 4px solid var(--orange-red);
|
||||
}
|
||||
.next-card.blue { border-top-color: var(--blue); }
|
||||
.next-card.purple { border-top-color: var(--purple); }
|
||||
.next-card.red { border-top-color: var(--red); }
|
||||
.next-card .next-icon {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.1rem;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.action-card .content { font-size: 0.9rem; }
|
||||
.action-card .note {
|
||||
font-size: 0.8rem;
|
||||
color: #64748b;
|
||||
margin-top: 8px;
|
||||
}
|
||||
.next-card.orange .next-icon { background: var(--orange-red-light); }
|
||||
.next-card.blue .next-icon { background: var(--blue-light); }
|
||||
.next-card.purple .next-icon { background: var(--purple-light); }
|
||||
.next-card.red .next-icon { background: var(--red-light); }
|
||||
.next-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.next-card .desc { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.55; }
|
||||
|
||||
/* Footer */
|
||||
/* ========== 六、项目推进(两卡+绿/蓝)========== */
|
||||
.progress-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.progress-card {
|
||||
background: var(--white);
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 4px 16px rgba(0,0,0,0.06);
|
||||
padding: 20px;
|
||||
border-left: 5px solid var(--green);
|
||||
}
|
||||
.progress-card.blue { border-left-color: var(--blue); }
|
||||
.progress-card .progress-icon { font-size: 1.3rem; margin-bottom: 10px; }
|
||||
.progress-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.progress-card .desc { font-size: 0.85rem; color: var(--text-secondary); line-height: 1.6; }
|
||||
|
||||
/* ========== 页脚 ========== */
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 32px;
|
||||
margin-top: 24px;
|
||||
background: rgba(248,250,252,0.8);
|
||||
border-radius: 16px;
|
||||
padding: 28px;
|
||||
font-size: 0.82rem;
|
||||
color: var(--text-muted);
|
||||
border-top: 1px solid #e5e7eb;
|
||||
margin-top: 12px;
|
||||
}
|
||||
.footer p { font-size: 0.85rem; color: #64748b; }
|
||||
.footer .brand { font-weight: 600; color: #3b82f6; }
|
||||
.footer .brand { color: var(--blue); font-weight: 700; }
|
||||
|
||||
/* Responsive */
|
||||
@media (max-width: 768px) {
|
||||
.container { padding: 16px; }
|
||||
.header h1 { font-size: 1.5rem; }
|
||||
.grid-2, .grid-3 { grid-template-columns: 1fr; }
|
||||
.flow-chart { flex-direction: column; }
|
||||
@media (max-width: 900px) {
|
||||
.speakers-row { grid-template-columns: repeat(2, 1fr); }
|
||||
.lean-row { grid-template-columns: 1fr; }
|
||||
.next-grid { grid-template-columns: 1fr; }
|
||||
.progress-row { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
.speakers-row { grid-template-columns: 1fr; }
|
||||
.flow-wrap { flex-direction: column; }
|
||||
.flow-arrow { transform: rotate(90deg); }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<!-- Header -->
|
||||
<header class="header glass">
|
||||
<header class="header">
|
||||
<h1>{{title}}</h1>
|
||||
<p class="subtitle">{{subtitle}}</p>
|
||||
<p class="subtitle">汇集实操经验与思考,核心关注:提要、细则、方法论、商业与链接。</p>
|
||||
<div class="nav-tags">
|
||||
<span class="nav-tag"><span class="nav-icon">👤</span>分享人</span>
|
||||
<span class="nav-tag"><span class="nav-icon">🎯</span>目标</span>
|
||||
<span class="nav-tag"><span class="nav-icon">❓</span>关键问题</span>
|
||||
<span class="nav-tag"><span class="nav-icon">💡</span>AI复盘</span>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span class="meta-item">⏱ {{duration}}</span>
|
||||
<span class="meta-item">👥 {{participants_count}} 参与</span>
|
||||
<span class="meta-item">📍 {{location}}</span>
|
||||
<span class="meta-item">📅 {{date}} {{time}}</span>
|
||||
<span>⏱ {{duration}}</span>
|
||||
<span>👥 {{participants_count}}</span>
|
||||
<span>📍 {{location}}</span>
|
||||
<span>📅 {{date}} {{time}}</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- 派对流程图 -->
|
||||
<div class="flow-chart glass">
|
||||
<div class="flow-step"><span class="icon">🎙️</span> 开场介绍</div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-step"><span class="icon">👥</span> 嘉宾分享</div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-step"><span class="icon">💡</span> 干货提炼</div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-step"><span class="icon">🤝</span> 项目对接</div>
|
||||
<span class="flow-arrow">→</span>
|
||||
<div class="flow-step"><span class="icon">📋</span> 总结收尾</div>
|
||||
</div>
|
||||
|
||||
<!-- 派对分享人 -->
|
||||
<section class="section">
|
||||
<h2 class="section-title">
|
||||
<span class="num">1</span>
|
||||
<span class="icon">🎤</span> 派对分享人
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">一</span>
|
||||
<span class="section-icon">👤</span>
|
||||
分享人介绍
|
||||
</h2>
|
||||
<div class="grid grid-2">
|
||||
{{#speakers}}
|
||||
<div class="speaker-card glass-card glass-gray">
|
||||
<p><span class="name">{{name}}</span> <span class="role">/ {{role}}</span></p>
|
||||
<p class="topics">{{topics}}</p>
|
||||
</div>
|
||||
{{/speakers}}
|
||||
</div>
|
||||
<div class="speakers-row">{{#speakers}}</div>
|
||||
</section>
|
||||
|
||||
<!-- 分享项目 -->
|
||||
<section class="section">
|
||||
<h2 class="section-title">
|
||||
<span class="num">2</span>
|
||||
<span class="icon">📌</span> 分享项目
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num orange">二</span>
|
||||
<span class="section-icon">📌</span>
|
||||
精益介绍
|
||||
</h2>
|
||||
{{#modules}}
|
||||
<div style="margin-bottom: 24px;">
|
||||
<h3 style="font-size: 1.1rem; font-weight: 700; margin-bottom: 16px; padding-bottom: 8px; border-bottom: 2px solid {{border_color}};">
|
||||
{{index}}️⃣ {{title}}
|
||||
</h3>
|
||||
<div class="grid grid-2">
|
||||
{{#items}}
|
||||
<div class="module-card glass-card glass-{{color}}">
|
||||
<h4>{{title}}</h4>
|
||||
<ul>
|
||||
{{#points}}
|
||||
<li class="{{class}}">{{text}}</li>
|
||||
{{/points}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/items}}
|
||||
</div>
|
||||
</div>
|
||||
{{/modules}}
|
||||
<div class="lean-row">{{#modules}}</div>
|
||||
</section>
|
||||
|
||||
<!-- 重点片段 -->
|
||||
<section class="section">
|
||||
<h2 class="section-title">
|
||||
<span class="num">3</span>
|
||||
<span class="icon">🔥</span> 重点片段
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">三</span>
|
||||
<span class="section-icon">🕐</span>
|
||||
会议流程
|
||||
</h2>
|
||||
{{#highlights}}
|
||||
<div class="highlight-card glass-card glass-{{color}}">
|
||||
<div class="header-row">
|
||||
<h4>{{emoji}} {{title}}</h4>
|
||||
<span class="time">{{time}}</span>
|
||||
</div>
|
||||
<p class="content">{{content}}</p>
|
||||
<p class="insight">💡 {{insight}}</p>
|
||||
</div>
|
||||
{{/highlights}}
|
||||
<div class="flow-wrap">{{#flow_steps}}</div>
|
||||
</section>
|
||||
|
||||
<!-- 干货提炼 -->
|
||||
<section class="section">
|
||||
<h2 class="section-title">
|
||||
<span class="num">4</span>
|
||||
<span class="icon">⚡</span> 干货提炼
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num purple">四</span>
|
||||
<span class="section-icon">❓</span>
|
||||
热点研讨
|
||||
</h2>
|
||||
<div class="grid grid-2">
|
||||
{{#takeaways}}
|
||||
<div class="takeaway-card glass-card glass-{{color}}">
|
||||
<h4>{{emoji}} {{title}}</h4>
|
||||
<ul>
|
||||
{{#points}}
|
||||
<li>{{.}}</li>
|
||||
{{/points}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/takeaways}}
|
||||
</div>
|
||||
<div class="hot-list">{{#highlights}}</div>
|
||||
</section>
|
||||
|
||||
<!-- 项目推进 -->
|
||||
<section class="section">
|
||||
<h2 class="section-title">
|
||||
<span class="num">5</span>
|
||||
<span class="icon">🚀</span> 项目推进
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">五</span>
|
||||
<span class="section-icon">📋</span>
|
||||
下次分享
|
||||
</h2>
|
||||
{{#actions}}
|
||||
<div class="action-card glass-card glass-{{color}}">
|
||||
<p class="content">{{content}}</p>
|
||||
{{#note}}<p class="note">📌 {{note}}</p>{{/note}}
|
||||
</div>
|
||||
{{/actions}}
|
||||
<div class="next-grid">{{#next_share}}</div>
|
||||
</section>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer glass">
|
||||
<p><span class="brand">卡若团队</span> 整理 | {{generate_date}}</p>
|
||||
<p style="margin-top: 8px;">每天 06:00-09:00 Soul派对直播 · 欢迎加入分享</p>
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">六</span>
|
||||
<span class="section-icon">🚀</span>
|
||||
项目推进
|
||||
</h2>
|
||||
<div class="progress-row">{{#actions}}</div>
|
||||
</section>
|
||||
|
||||
<footer class="footer">
|
||||
<p>版权所有 © 2026 <span class="brand">Karuo.AI</span></p>
|
||||
<p style="margin-top: 8px;">Power by Karuo.AI · 每天 06:00-09:00 Soul派对直播</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
482
04_卡火(火)/火眼_智能追问/智能纪要/templates/meeting_alt.html
Normal file
482
04_卡火(火)/火眼_智能追问/智能纪要/templates/meeting_alt.html
Normal file
@@ -0,0 +1,482 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{title}} - 卡若派对纪要</title>
|
||||
<style>
|
||||
/* ===== 非101风格:简约编辑风,结构同 meeting.html ===== */
|
||||
:root {
|
||||
--accent: #475569;
|
||||
--accent-soft: #e2e8f0;
|
||||
--white: #ffffff;
|
||||
--bg-page: #f8fafc;
|
||||
--text-primary: #0f172a;
|
||||
--text-secondary: #475569;
|
||||
--text-muted: #64748b;
|
||||
--border: #e2e8f0;
|
||||
--border-strong: #cbd5e1;
|
||||
--key-bg: #f1f5f9;
|
||||
--key-border: #cbd5e1;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
background: var(--bg-page);
|
||||
min-height: 100vh;
|
||||
color: var(--text-primary);
|
||||
line-height: 1.65;
|
||||
}
|
||||
|
||||
.container { max-width: 1120px; margin: 0 auto; padding: 32px 28px; }
|
||||
|
||||
.section-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-bottom: 18px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 2px solid var(--border);
|
||||
font-size: 1.2rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.section-head .section-num {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
color: var(--accent);
|
||||
background: var(--accent-soft);
|
||||
border: 2px solid var(--border-strong);
|
||||
border-radius: 8px;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 800;
|
||||
}
|
||||
.section-head .section-num.blue,
|
||||
.section-head .section-num.orange,
|
||||
.section-head .section-num.green,
|
||||
.section-head .section-num.purple { color: var(--accent); background: var(--accent-soft); border-color: var(--border-strong); }
|
||||
.section-head .section-icon { font-size: 1.25rem; opacity: 0.85; }
|
||||
|
||||
.header {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
padding: 32px 36px 24px;
|
||||
margin-bottom: 28px;
|
||||
box-shadow: none;
|
||||
}
|
||||
.header h1 {
|
||||
font-size: 1.75rem;
|
||||
font-weight: 800;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.3;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
.header .subtitle {
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 18px;
|
||||
max-width: 720px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
.header .nav-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; }
|
||||
.header .nav-tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
background: var(--accent-soft);
|
||||
color: var(--text-secondary);
|
||||
padding: 8px 14px;
|
||||
border-radius: 20px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 600;
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
.header .nav-tag .nav-icon { font-size: 1rem; }
|
||||
.header .meta {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 16px;
|
||||
font-size: 0.88rem;
|
||||
color: var(--text-muted);
|
||||
padding-top: 12px;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.speakers-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.speaker-card {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
overflow: hidden;
|
||||
box-shadow: none;
|
||||
}
|
||||
.speaker-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-primary);
|
||||
background: var(--accent-soft);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.speaker-card .head .head-icon {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
background: var(--white);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1rem;
|
||||
}
|
||||
.speaker-card .head.blue,
|
||||
.speaker-card .head.orange,
|
||||
.speaker-card .head.green,
|
||||
.speaker-card .head.purple { background: var(--accent-soft); color: var(--text-primary); border-bottom-color: var(--border); }
|
||||
.speaker-card .body { padding: 16px; }
|
||||
.speaker-card .role { font-weight: 700; font-size: 0.9rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.speaker-card .topics { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.5; margin-bottom: 10px; }
|
||||
.speaker-card .pills { display: flex; flex-wrap: wrap; gap: 6px; }
|
||||
.speaker-card .pill {
|
||||
font-size: 0.72rem;
|
||||
font-weight: 600;
|
||||
padding: 4px 10px;
|
||||
border-radius: 10px;
|
||||
background: var(--accent-soft);
|
||||
color: var(--text-secondary);
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
.speaker-card .pill.blue,
|
||||
.speaker-card .pill.orange,
|
||||
.speaker-card .pill.green,
|
||||
.speaker-card .pill.purple,
|
||||
.speaker-card .pill.red { background: var(--accent-soft); color: var(--text-secondary); border-color: var(--border); }
|
||||
|
||||
.lean-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.lean-card {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-top: 4px solid var(--accent);
|
||||
overflow: hidden;
|
||||
box-shadow: none;
|
||||
}
|
||||
.lean-card.orange,
|
||||
.lean-card.blue,
|
||||
.lean-card.green { border-top-color: var(--accent); }
|
||||
.lean-card .head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 14px 16px;
|
||||
font-weight: 800;
|
||||
font-size: 0.95rem;
|
||||
color: var(--text-primary);
|
||||
background: var(--accent-soft);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.lean-card .head .lean-icon {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
background: var(--white);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.lean-card .head.orange,
|
||||
.lean-card .head.blue,
|
||||
.lean-card .head.green { background: var(--accent-soft); color: var(--text-primary); }
|
||||
.lean-card .body { padding: 16px; }
|
||||
.lean-card h4 { font-size: 0.88rem; font-weight: 700; margin-bottom: 8px; color: var(--text-primary); }
|
||||
.lean-card ul { list-style: none; }
|
||||
.lean-card li {
|
||||
font-size: 0.82rem;
|
||||
padding: 5px 0;
|
||||
padding-left: 16px;
|
||||
position: relative;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
.lean-card li::before { content: "▪"; position: absolute; left: 0; color: var(--text-muted); font-weight: bold; }
|
||||
.lean-card li .inline-tag { font-size: 0.7rem; padding: 2px 6px; border-radius: 4px; margin-right: 4px; font-weight: 600; background: var(--accent-soft); color: var(--text-secondary); }
|
||||
.lean-card li .tag-项目,
|
||||
.lean-card li .tag-产品,
|
||||
.lean-card li .tag-运营,
|
||||
.lean-card li .tag-商业 { background: var(--accent-soft); color: var(--text-secondary); }
|
||||
|
||||
.flow-wrap {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
padding: 24px 28px;
|
||||
margin-bottom: 32px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
}
|
||||
.flow-node {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
min-width: 88px;
|
||||
}
|
||||
.flow-node .circle {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.2rem;
|
||||
color: var(--text-primary);
|
||||
background: var(--accent-soft);
|
||||
border: 2px solid var(--border-strong);
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.flow-node .circle.blue,
|
||||
.flow-node .circle.purple,
|
||||
.flow-node .circle.orange,
|
||||
.flow-node .circle.red,
|
||||
.flow-node .circle.green { background: var(--accent-soft); color: var(--text-primary); border-color: var(--border-strong); }
|
||||
.flow-node .label { font-size: 0.8rem; font-weight: 700; color: var(--text-primary); text-align: center; }
|
||||
.flow-node .time { font-size: 0.7rem; color: var(--text-muted); margin-top: 2px; }
|
||||
.flow-arrow { color: var(--border-strong); font-size: 1.1rem; font-weight: bold; }
|
||||
|
||||
.hot-list { margin-bottom: 32px; }
|
||||
.hot-item {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
margin-bottom: 16px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.hot-item .top-row {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 14px;
|
||||
padding: 16px 20px;
|
||||
background: var(--bg-page);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.hot-item .signal-tag {
|
||||
flex-shrink: 0;
|
||||
padding: 6px 12px;
|
||||
border-radius: 8px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 700;
|
||||
background: var(--accent);
|
||||
color: var(--white);
|
||||
}
|
||||
.hot-item .signal-tag.ai,
|
||||
.hot-item .signal-tag.user,
|
||||
.hot-item .signal-tag.expert,
|
||||
.hot-item .signal-tag.question { background: var(--accent); color: var(--white); }
|
||||
.hot-item .signal-time { font-size: 0.72rem; color: var(--text-muted); margin-top: 4px; }
|
||||
.hot-item .topic-wrap { flex: 1; }
|
||||
.hot-item .topic-wrap .q-icon { color: var(--accent); font-weight: 800; margin-right: 6px; }
|
||||
.hot-item .topic-wrap .topic-title { font-weight: 800; font-size: 1rem; color: var(--text-primary); }
|
||||
.hot-item .content { padding: 16px 20px; font-size: 0.9rem; color: var(--text-secondary); line-height: 1.65; }
|
||||
.hot-item .content ul { margin: 10px 0 0 20px; }
|
||||
.hot-item .content li { margin: 5px 0; }
|
||||
.hot-item .key-point {
|
||||
margin: 0 20px 16px;
|
||||
padding: 14px 16px;
|
||||
background: var(--key-bg);
|
||||
border: 1px solid var(--key-border);
|
||||
border-radius: 10px;
|
||||
font-size: 0.88rem;
|
||||
font-weight: 600;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
.hot-item .key-point .label {
|
||||
display: inline-block;
|
||||
background: var(--accent-soft);
|
||||
color: var(--accent);
|
||||
padding: 3px 10px;
|
||||
border-radius: 6px;
|
||||
font-size: 0.75rem;
|
||||
font-weight: 800;
|
||||
margin-bottom: 8px;
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.next-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.next-card {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-top: 4px solid var(--accent);
|
||||
padding: 20px;
|
||||
}
|
||||
.next-card.blue,
|
||||
.next-card.purple,
|
||||
.next-card.red { border-top-color: var(--accent); }
|
||||
.next-card .next-icon {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.1rem;
|
||||
margin-bottom: 12px;
|
||||
background: var(--accent-soft);
|
||||
border: 1px solid var(--border);
|
||||
}
|
||||
.next-card.orange .next-icon,
|
||||
.next-card.blue .next-icon,
|
||||
.next-card.purple .next-icon,
|
||||
.next-card.red .next-icon { background: var(--accent-soft); border: 1px solid var(--border); }
|
||||
.next-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.next-card .desc { font-size: 0.83rem; color: var(--text-secondary); line-height: 1.55; }
|
||||
|
||||
.progress-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 16px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.progress-card {
|
||||
background: var(--white);
|
||||
border-radius: 12px;
|
||||
border: 1px solid var(--border);
|
||||
border-left: 5px solid var(--accent);
|
||||
padding: 20px;
|
||||
}
|
||||
.progress-card.blue { border-left-color: var(--accent); }
|
||||
.progress-card .progress-icon { font-size: 1.3rem; margin-bottom: 10px; }
|
||||
.progress-card .title { font-weight: 800; font-size: 1rem; color: var(--text-primary); margin-bottom: 8px; }
|
||||
.progress-card .desc { font-size: 0.85rem; color: var(--text-secondary); line-height: 1.6; }
|
||||
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 28px;
|
||||
font-size: 0.82rem;
|
||||
color: var(--text-muted);
|
||||
border-top: 1px solid var(--border);
|
||||
margin-top: 12px;
|
||||
}
|
||||
.footer .brand { color: var(--accent); font-weight: 700; }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.speakers-row { grid-template-columns: repeat(2, 1fr); }
|
||||
.lean-row { grid-template-columns: 1fr; }
|
||||
.next-grid { grid-template-columns: 1fr; }
|
||||
.progress-row { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
.speakers-row { grid-template-columns: 1fr; }
|
||||
.flow-wrap { flex-direction: column; }
|
||||
.flow-arrow { transform: rotate(90deg); }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<header class="header">
|
||||
<h1>{{title}}</h1>
|
||||
<p class="subtitle">汇集实操经验与思考,核心关注:提要、细则、方法论、商业与链接。</p>
|
||||
<div class="nav-tags">
|
||||
<span class="nav-tag"><span class="nav-icon">👤</span>分享人</span>
|
||||
<span class="nav-tag"><span class="nav-icon">🎯</span>目标</span>
|
||||
<span class="nav-tag"><span class="nav-icon">❓</span>关键问题</span>
|
||||
<span class="nav-tag"><span class="nav-icon">💡</span>AI复盘</span>
|
||||
</div>
|
||||
<div class="meta">
|
||||
<span>⏱ {{duration}}</span>
|
||||
<span>👥 {{participants_count}}</span>
|
||||
<span>📍 {{location}}</span>
|
||||
<span>📅 {{date}} {{time}}</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">一</span>
|
||||
<span class="section-icon">👤</span>
|
||||
分享人介绍
|
||||
</h2>
|
||||
<div class="speakers-row">{{#speakers}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num orange">二</span>
|
||||
<span class="section-icon">📌</span>
|
||||
精益介绍
|
||||
</h2>
|
||||
<div class="lean-row">{{#modules}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">三</span>
|
||||
<span class="section-icon">🕐</span>
|
||||
会议流程
|
||||
</h2>
|
||||
<div class="flow-wrap">{{#flow_steps}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num purple">四</span>
|
||||
<span class="section-icon">❓</span>
|
||||
热点研讨
|
||||
</h2>
|
||||
<div class="hot-list">{{#highlights}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num blue">五</span>
|
||||
<span class="section-icon">📋</span>
|
||||
下次分享
|
||||
</h2>
|
||||
<div class="next-grid">{{#next_share}}</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2 class="section-head">
|
||||
<span class="section-num green">六</span>
|
||||
<span class="section-icon">🚀</span>
|
||||
项目推进
|
||||
</h2>
|
||||
<div class="progress-row">{{#actions}}</div>
|
||||
</section>
|
||||
|
||||
<footer class="footer">
|
||||
<p>版权所有 © 2026 <span class="brand">Karuo.AI</span></p>
|
||||
<p style="margin-top: 8px;">Power by Karuo.AI · 每天 06:00-09:00 Soul派对直播</p>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
65
04_卡火(火)/火眼_智能追问/智能纪要/智能纪要模板说明.md
Normal file
65
04_卡火(火)/火眼_智能追问/智能纪要/智能纪要模板说明.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 智能纪要模板说明(与 101 场视觉一致)
|
||||
|
||||
> 配色、图标、信号标签、重点框均与参考图 101场.jpg 对齐,便于**结构清晰、重点突出、易区分**。
|
||||
|
||||
---
|
||||
|
||||
## 一、配色体系(CSS 变量)
|
||||
|
||||
| 用途 | 变量/色值 | 说明 |
|
||||
|------------|------------------|----------------|
|
||||
| 主蓝 | `#2563eb` | 分享人卡1、流程、下次分享卡2 |
|
||||
| 橙红 | `#ea580c` | 分享人卡2、精益卡1、流程、下次分享卡1 |
|
||||
| 绿 | `#16a34a` | 分享人卡3、精益卡3、流程、项目卡1 |
|
||||
| 紫 | `#7c3aed` | 分享人卡4、流程、下次分享卡3 |
|
||||
| 红 | `#dc2626` | 信号「AI思考」、流程、下次分享卡4 |
|
||||
| **重点黄** | `#fef08a` / `#fef9c3` | 热点研讨底部「重点」框,强对比 |
|
||||
| 页面底 | `#fafafa` | 浅灰底,不抢内容 |
|
||||
|
||||
---
|
||||
|
||||
## 二、六大区块与节奏
|
||||
|
||||
| 区块 | 标题样式 | 内容样式 | 图标/信号 |
|
||||
|------------|--------------------|----------|-----------|
|
||||
| **一、分享人介绍** | 蓝色方标「一」+ 👤 | 4 张横卡:蓝/橙/绿/紫顶条 + 白底小图标 + 姓名/角色/话题 | 顶条内 👤;可加性格/项目标签(INTJ、私域等) |
|
||||
| **二、精益介绍** | 橙色方标「二」+ 📌 | 3 张横卡:橙/蓝/绿顶条 + 白底图标(📌✓⚙️) + 子标题与要点 | 项目/产品/运营/商业可用小色块标签 |
|
||||
| **三、会议流程** | 绿色方标「三」+ 🕐 | 横向 5 个**彩色圆**(蓝/紫/橙/红/绿)+ 圆内白图标 + 步骤名 + 时间 | 🎙️👥💡🤝📋 |
|
||||
| **四、热点研讨** | 紫色方标「四」+ ❓ | 每条:**左侧信号标签** + 时间 + **Q: 标题** + 正文 + **重点(黄框)** | 信号:AI思考(红)/用户观点(蓝)/专家洞察(紫)/AI提问(绿) |
|
||||
| **五、下次分享** | 蓝色方标「五」+ 📋 | 2×2 四卡:橙/蓝/紫/红顶条 + 图标 + 标题 + 简述 | 📌🎯📋💡 |
|
||||
| **六、项目推进** | 绿色方标「六」+ 🚀 | 2 张横卡:绿/蓝左边条 + 图标 + 标题 + 说明 | 🚀📊 |
|
||||
|
||||
---
|
||||
|
||||
## 三、JSON 字段与模板对应
|
||||
|
||||
- **speakers[]**:`name`, `role`, `topics`;可选 `tags` 或 `pills`(如 `["INTJ","私域"]`)→ 渲染为彩色小标签。
|
||||
- **modules[]**:`title`, `color`(orange/blue/green), `items[]` → 精益介绍三卡。
|
||||
- **flow_times[]**:5 个时间串 → 会议流程下方时间。
|
||||
- **highlights[]**:`title`, `time`, `content`, `insight`;可选 **`signal`**:`ai`|`user`|`expert`|`question` → 左侧信号标签与配色。
|
||||
- **actions[]**:前 2 条 → 项目推进;第 3–6 条(不足用 takeaways 补)→ 下次分享 4 卡。
|
||||
|
||||
---
|
||||
|
||||
## 四、重点与信号(和 101 场一致)
|
||||
|
||||
- **重点**:每条热点研讨底部为**浅黄背景框**,标题为「重点」,内容为 `insight`,用于强调结论/启示。
|
||||
- **信号**:热点研讨左侧为**彩色小标签**,区分来源/类型:
|
||||
- **AI思考**(红)
|
||||
- **用户观点**(蓝)
|
||||
- **专家洞察**(紫)
|
||||
- **AI提问**(绿)
|
||||
|
||||
---
|
||||
|
||||
## 五、模板文件位置
|
||||
|
||||
- HTML 模板:`templates/meeting.html`
|
||||
- 生成脚本:`脚本/generate_meeting.py`
|
||||
- 本说明:`智能纪要模板说明.md`
|
||||
|
||||
生成命令示例:
|
||||
|
||||
```bash
|
||||
python3 generate_meeting.py --input "xxx_meeting.json" --output "../output/xxx.html"
|
||||
```
|
||||
@@ -59,127 +59,144 @@ def simple_template_render(template: str, data: dict) -> str:
|
||||
|
||||
|
||||
def generate_html(data: dict, template_path: Path) -> str:
|
||||
"""生成HTML内容"""
|
||||
# 读取模板
|
||||
"""生成HTML内容(101场风格:分享人/精益/流程图/热点研讨含深度思考/下次分享/项目推进)"""
|
||||
import re
|
||||
with open(template_path, "r", encoding="utf-8") as f:
|
||||
template = f.read()
|
||||
|
||||
# 添加生成日期
|
||||
data["generate_date"] = datetime.now().strftime("%Y年%m月%d日 %H:%M")
|
||||
|
||||
# 生成分享人HTML
|
||||
# 一、分享人介绍:4色卡+白底图标+性格/项目标签(与101场一致)
|
||||
head_colors = ["blue", "orange", "green", "purple"]
|
||||
flow_icons = ["🎙️", "👥", "💡", "🤝", "📋"]
|
||||
speakers_html = ""
|
||||
for speaker in data.get("speakers", []):
|
||||
for i, speaker in enumerate(data.get("speakers", [])[:4]):
|
||||
hc = head_colors[i % len(head_colors)]
|
||||
name = speaker.get("name", "")
|
||||
role = speaker.get("role", "")
|
||||
topics = speaker.get("topics", "")
|
||||
tags = speaker.get("tags", speaker.get("pills", []))
|
||||
if isinstance(tags, str):
|
||||
tags = [tags] if tags else []
|
||||
pills_html = ""
|
||||
pill_colors = ["blue", "orange", "green", "purple", "red"]
|
||||
for pi, tag in enumerate(tags[:5]):
|
||||
pc = pill_colors[pi % len(pill_colors)]
|
||||
pills_html += f'<span class="pill {pc}">{tag}</span>'
|
||||
if pills_html:
|
||||
pills_html = f'<div class="pills">{pills_html}</div>'
|
||||
speakers_html += f'''
|
||||
<div class="speaker-card glass-card glass-gray">
|
||||
<p><span class="name">{speaker["name"]}</span> <span class="role">/ {speaker["role"]}</span></p>
|
||||
<p class="topics">{speaker["topics"]}</p>
|
||||
<div class="speaker-card">
|
||||
<div class="head {hc}"><span class="head-icon">👤</span>{name or "分享人"}</div>
|
||||
<div class="body"><p class="role">{role}</p><p class="topics">{topics}</p>{pills_html}</div>
|
||||
</div>
|
||||
'''
|
||||
|
||||
# 生成核心模块HTML
|
||||
# 二、精益介绍:3卡+图标(与101场:项目/产品/运营/商业标签可放在 points 前)
|
||||
lean_colors = ["orange", "blue", "green"]
|
||||
lean_icons = ["📌", "✓", "⚙️"]
|
||||
modules_html = ""
|
||||
for i, module in enumerate(data.get("modules", []), 1):
|
||||
color = module.get("color", "blue")
|
||||
border_color = BORDER_COLORS.get(color, "#e2e8f0")
|
||||
|
||||
items_html = ""
|
||||
for item in module.get("items", []):
|
||||
points_html = ""
|
||||
for i, module in enumerate(data.get("modules", [])[:3]):
|
||||
lc = lean_colors[i % len(lean_colors)]
|
||||
icon = lean_icons[i % len(lean_icons)]
|
||||
title = module.get("title", "")
|
||||
body_parts = []
|
||||
for item in module.get("items", [])[:2]:
|
||||
pts = []
|
||||
for point in item.get("points", []):
|
||||
if isinstance(point, dict):
|
||||
cls = point.get("class", "")
|
||||
text = point.get("text", "")
|
||||
pts.append(f'<li>{text}</li>')
|
||||
else:
|
||||
cls = ""
|
||||
text = point
|
||||
points_html += f'<li class="{cls}">{text}</li>'
|
||||
|
||||
items_html += f'''
|
||||
<div class="module-card glass-card glass-{color}">
|
||||
<h4>{item.get("title", "")}</h4>
|
||||
<ul>{points_html}</ul>
|
||||
</div>
|
||||
'''
|
||||
|
||||
modules_html += f'''
|
||||
<div style="margin-bottom: 24px;">
|
||||
<h3 style="font-size: 1.1rem; font-weight: 700; margin-bottom: 16px; padding-bottom: 8px; border-bottom: 2px solid {border_color};">
|
||||
{i}️⃣ {module.get("title", "")}
|
||||
</h3>
|
||||
<div class="grid grid-2">
|
||||
{items_html}
|
||||
</div>
|
||||
</div>
|
||||
'''
|
||||
pts.append(f'<li>{point}</li>')
|
||||
body_parts.append(f'<h4>{item.get("title", "")}</h4><ul>{"".join(pts)}</ul>')
|
||||
body_inner = "".join(body_parts)
|
||||
modules_html += f'<div class="lean-card {lc}"><div class="head {lc}"><span class="lean-icon">{icon}</span>{title}</div><div class="body">{body_inner}</div></div>\n'
|
||||
|
||||
# 生成重点片段HTML
|
||||
# 三、会议流程图:彩色圆+白图标+步骤号(与101场一致)
|
||||
time_slots = data.get("flow_times") or ["06:00-06:10", "06:10-07:30", "07:30-08:00", "08:00-08:40", "08:40-09:00"]
|
||||
if isinstance(time_slots, str):
|
||||
time_slots = ["06:00", "06:30", "07:30", "08:00", "08:50"]
|
||||
labels = ["开场介绍", "嘉宾分享", "干货提炼", "项目对接", "总结收尾"]
|
||||
circle_colors = ["blue", "purple", "orange", "red", "green"]
|
||||
flow_steps_html = ""
|
||||
for j, label in enumerate(labels):
|
||||
t = time_slots[j] if j < len(time_slots) else ""
|
||||
cc = circle_colors[j % len(circle_colors)]
|
||||
icon = flow_icons[j] if j < len(flow_icons) else "•"
|
||||
flow_steps_html += f'<div class="flow-node"><div class="circle {cc}">{icon}</div><span class="label">{label}</span><span class="time">{t}</span></div>\n'
|
||||
if j < len(labels) - 1:
|
||||
flow_steps_html += '<span class="flow-arrow">→</span>\n'
|
||||
|
||||
# 四、热点研讨:信号标签(AI思考/用户观点/专家洞察/AI提问)+ Q: + 重点黄框(与101场一致)
|
||||
signal_map = {"ai": "AI思考", "user": "用户观点", "expert": "专家洞察", "question": "AI提问"}
|
||||
signal_class = {"ai": "ai", "user": "user", "expert": "expert", "question": "question"}
|
||||
highlights_html = ""
|
||||
for highlight in data.get("highlights", []):
|
||||
color = highlight.get("color", "blue")
|
||||
emoji = COLOR_EMOJIS.get(color, "💡")
|
||||
sig = highlight.get("signal", "user")
|
||||
sig_text = signal_map.get(sig, "用户观点")
|
||||
sig_cls = signal_class.get(sig, "user")
|
||||
title = highlight.get("title", "")
|
||||
time_val = highlight.get("time", "")
|
||||
content = highlight.get("content", "")
|
||||
insight = highlight.get("insight", "")
|
||||
highlights_html += f'''
|
||||
<div class="highlight-card glass-card glass-{color}">
|
||||
<div class="header-row">
|
||||
<h4>{emoji} {highlight.get("title", "")}</h4>
|
||||
<span class="time">{highlight.get("time", "")}</span>
|
||||
<div class="hot-item">
|
||||
<div class="top-row">
|
||||
<div><span class="signal-tag {sig_cls}">{sig_text}</span><div class="signal-time">{time_val}</div></div>
|
||||
<div class="topic-wrap"><span class="q-icon">Q:</span><span class="topic-title">{title}</span></div>
|
||||
</div>
|
||||
<p class="content">{highlight.get("content", "")}</p>
|
||||
<p class="insight">💡 {highlight.get("insight", "")}</p>
|
||||
<div class="content">{content}</div>
|
||||
<div class="key-point"><span class="label">重点</span><br/>{insight}</div>
|
||||
</div>
|
||||
'''
|
||||
|
||||
# 生成干货分享HTML
|
||||
takeaways_html = ""
|
||||
for takeaway in data.get("takeaways", []):
|
||||
color = takeaway.get("color", "yellow")
|
||||
emoji = COLOR_EMOJIS.get(color, "💡")
|
||||
points_html = "".join([f"<li>{p}</li>" for p in takeaway.get("points", [])])
|
||||
takeaways_html += f'''
|
||||
<div class="takeaway-card glass-card glass-{color}">
|
||||
<h4>{emoji} {takeaway.get("title", "")}</h4>
|
||||
<ul>{points_html}</ul>
|
||||
</div>
|
||||
'''
|
||||
# 五、下次分享:4卡 橙/蓝/紫/红 + 图标(与101场一致)
|
||||
actions_list = data.get("actions", [])
|
||||
takeaways_list = data.get("takeaways", [])
|
||||
next_sources = list(actions_list[2:6]) if len(actions_list) > 2 else []
|
||||
takeaways_copy = list(takeaways_list)
|
||||
while len(next_sources) < 4 and takeaways_copy:
|
||||
tw = takeaways_copy.pop(0)
|
||||
pt = (tw.get("points", []) or [""])[0]
|
||||
desc = pt[:80] if isinstance(pt, str) else str(pt)[:80]
|
||||
next_sources.append({"content": tw.get("title", ""), "note": desc})
|
||||
while len(next_sources) < 4:
|
||||
next_sources.append({"content": "待定", "note": "下期公布"})
|
||||
next_colors = ["orange", "blue", "purple", "red"]
|
||||
next_icons = ["📌", "🎯", "📋", "💡"]
|
||||
next_share_html = ""
|
||||
for i, item in enumerate(next_sources[:4]):
|
||||
title = item.get("content", item.get("title", "待定"))[:22]
|
||||
desc = (item.get("note", "") or "")[:85]
|
||||
nc = next_colors[i % len(next_colors)]
|
||||
ni = next_icons[i % len(next_icons)]
|
||||
next_share_html += f'<div class="next-card {nc}"><div class="next-icon">{ni}</div><div class="title">{title}</div><div class="desc">{desc}</div></div>\n'
|
||||
|
||||
# 生成行动项HTML
|
||||
# 六、项目推进:绿/蓝两卡 + 图标(与101场一致)
|
||||
progress_icons = ["🚀", "📊"]
|
||||
actions_html = ""
|
||||
for i, action in enumerate(data.get("actions", [])):
|
||||
colors = ["blue", "purple", "green", "orange"]
|
||||
color = colors[i % len(colors)]
|
||||
note_html = f'<p class="note">💬 {action.get("note", "")}</p>' if action.get("note") else ""
|
||||
actions_html += f'''
|
||||
<div class="action-card glass-card glass-{color}">
|
||||
<p class="content">{action.get("content", "")}</p>
|
||||
{note_html}
|
||||
</div>
|
||||
'''
|
||||
for i, action in enumerate((data.get("actions", []))[:2]):
|
||||
content = action.get("content", "")
|
||||
note = action.get("note", "")
|
||||
card_class = "blue" if i == 1 else ""
|
||||
icon = progress_icons[i] if i < len(progress_icons) else "🚀"
|
||||
actions_html += f'<div class="progress-card {card_class}"><div class="progress-icon">{icon}</div><div class="title">项目推进</div><div class="desc">{content}<br/><small style="color:#6b7280;">{note}</small></div></div>\n'
|
||||
|
||||
# 替换模板中的占位符
|
||||
html = template
|
||||
|
||||
# 替换列表部分
|
||||
# 移除模板语法,插入生成的HTML
|
||||
import re
|
||||
|
||||
# 替换 speakers
|
||||
html = re.sub(r'\{\{#speakers\}\}.*?\{\{/speakers\}\}', speakers_html, html, flags=re.DOTALL)
|
||||
|
||||
# 替换 modules
|
||||
html = re.sub(r'\{\{#modules\}\}.*?\{\{/modules\}\}', modules_html, html, flags=re.DOTALL)
|
||||
|
||||
# 替换 highlights
|
||||
html = re.sub(r'\{\{#highlights\}\}.*?\{\{/highlights\}\}', highlights_html, html, flags=re.DOTALL)
|
||||
|
||||
# 替换 takeaways
|
||||
html = re.sub(r'\{\{#takeaways\}\}.*?\{\{/takeaways\}\}', takeaways_html, html, flags=re.DOTALL)
|
||||
|
||||
# 替换 actions
|
||||
html = re.sub(r'\{\{#actions\}\}.*?\{\{/actions\}\}', actions_html, html, flags=re.DOTALL)
|
||||
|
||||
# 替换简单变量
|
||||
# 支持两种模板:有 {{/xxx}} 的块替换,或仅 {{#xxx}} 的单占位符替换
|
||||
def replace_block(html, name, content):
|
||||
block_pattern = r'\{\{#' + name + r'\}\}.*?\{\{/' + name + r'\}\}'
|
||||
if re.search(block_pattern, html, flags=re.DOTALL):
|
||||
return re.sub(block_pattern, content.strip(), html, flags=re.DOTALL)
|
||||
return html.replace('{{#' + name + '}}', content.strip())
|
||||
html = replace_block(html, 'speakers', speakers_html)
|
||||
html = replace_block(html, 'modules', modules_html)
|
||||
html = replace_block(html, 'flow_steps', flow_steps_html)
|
||||
html = replace_block(html, 'highlights', highlights_html)
|
||||
html = replace_block(html, 'next_share', next_share_html)
|
||||
html = replace_block(html, 'actions', actions_html)
|
||||
html = simple_template_render(html, data)
|
||||
|
||||
return html
|
||||
|
||||
|
||||
@@ -361,6 +378,7 @@ def main():
|
||||
parser.add_argument("--demo", action="store_true", help="生成示例文件")
|
||||
parser.add_argument("--input", "-i", type=str, help="输入JSON文件路径")
|
||||
parser.add_argument("--output", "-o", type=str, help="输出HTML文件路径")
|
||||
parser.add_argument("--template", "-t", type=str, default="meeting.html", help="模板文件名,如 meeting.html 或 meeting_alt.html")
|
||||
parser.add_argument("--interactive", action="store_true", help="交互式输入")
|
||||
|
||||
args = parser.parse_args()
|
||||
@@ -389,7 +407,10 @@ def main():
|
||||
output_path = OUTPUT_DIR / output_name
|
||||
|
||||
# 生成HTML
|
||||
template_path = TEMPLATE_DIR / "meeting.html"
|
||||
template_name = args.template if hasattr(args, "template") and args.template else "meeting.html"
|
||||
template_path = TEMPLATE_DIR / template_name
|
||||
if not template_path.exists():
|
||||
template_path = TEMPLATE_DIR / "meeting.html"
|
||||
html = generate_html(data, template_path)
|
||||
|
||||
# 写入文件
|
||||
|
||||
Reference in New Issue
Block a user