feat: daily collection 6/12 - new docs, industry report, .gitignore cleanup

- Collected 9 new messages from dc group and innovation group
- Fetched 6 new Feishu docs (黄静雯/陈楚真/韦译/夏莲/莫润麟/张家振)
- Downloaded 狱国争霸分析拆解.html file attachment
- Saved 6/12 game industry daily report from 韩丹
- Updated .gitignore to exclude temp scripts, images, downloaded files
- Added utility scripts (group members extraction, invitation generation)
This commit is contained in:
Evilom
2026-06-12 10:32:24 +08:00
parent 3b77605591
commit 64ac71a8ed
9 changed files with 1453 additions and 9 deletions
+55
View File
@@ -0,0 +1,55 @@
import csv, os
CSV_PATH = r"D:\desktop\feishu_docs_summary\data\group_members_with_account.csv"
HTML_PATH = r"D:\desktop\feishu_docs_summary\output\group_members_with_account.html"
rows = []
with open(CSV_PATH, encoding="utf-8-sig") as f:
for r in csv.DictReader(f):
rows.append(r)
matched = sum(1 for r in rows if r.get("密码"))
html = []
html.append('<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8">')
html.append('<title>厦门点触科技 - 群成员账号信息</title>')
html.append("""<style>
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,"Microsoft YaHei",sans-serif;background:#f5f6fa;padding:20px}
h1{text-align:center;margin-bottom:6px;font-size:22px;color:#2d3436}
.stats{text-align:center;color:#636e72;margin-bottom:16px;font-size:14px}
.sb{text-align:center;margin-bottom:16px}
.sb input{width:400px;padding:8px 14px;border:1px solid #ddd;border-radius:6px;font-size:14px}
table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.08)}
th{background:#0984e3;color:#fff;padding:10px 12px;text-align:left;font-size:13px;cursor:pointer;user-select:none;white-space:nowrap}
th:hover{background:#0770c2}
td{padding:8px 12px;border-bottom:1px solid #eee;font-size:13px}
tr:hover{background:#f0f7ff}
tr:nth-child(even){background:#fafbfc}
tr:nth-child(even):hover{background:#f0f7ff}
.m{color:#d63031;font-style:italic}
</style></head><body>""")
html.append('<h1>厦门点触科技股份有限公司 - 群成员账号信息</h1>')
html.append(f'<p class="stats">共 <b>{len(rows)}</b> 人 | 已匹配账号: <b>{matched}</b> | 未匹配: <b>{len(rows)-matched}</b></p>')
html.append('<div class="sb"><input type="text" id="q" placeholder="搜索姓名、工号、邮箱、部门..." oninput="ft()"></div>')
html.append('<table id="t"><thead><tr>')
for i, h in enumerate(["序号","姓名","账号","密码","企业邮箱","部门","职位"]):
html.append(f'<th onclick="st({i})">{h}</th>')
html.append('</tr></thead><tbody>')
for r in rows:
acct = r.get("账号","")
pwd = r.get("密码","")
pwd_d = str(pwd) if pwd else '<span class="m">-</span>'
acct_d = acct if acct else '<span class="m">-</span>'
html.append(f'<tr><td>{r.get("序号","")}</td><td>{r.get("姓名","")}</td><td>{acct_d}</td><td>{pwd_d}</td><td>{r.get("企业邮箱","")}</td><td>{r.get("部门","")}</td><td>{r.get("职位","")}</td></tr>')
html.append("""</tbody></table>
<script>
function ft(){var q=document.getElementById("q").value.toLowerCase(),rs=document.getElementById("t").tBodies[0].rows;for(var i=0;i<rs.length;i++)rs[i].style.display=rs[i].textContent.toLowerCase().indexOf(q)>-1?"":"none"}
var sd={};function st(c){var t=document.getElementById("t"),b=t.tBodies[0],rs=Array.from(b.rows);sd[c]=!sd[c];rs.sort(function(a,b){var x=a.cells[c].textContent.trim(),y=b.cells[c].textContent.trim(),nx=parseFloat(x),ny=parseFloat(y);if(!isNaN(nx)&&!isNaN(ny))return sd[c]?nx-ny:ny-nx;return sd[c]?x.localeCompare(y,"zh"):y.localeCompare(x,"zh")});rs.forEach(function(r){b.appendChild(r)})}
</script></body></html>""")
with open(HTML_PATH, "w", encoding="utf-8") as f:
f.write("\n".join(html))
print(f"HTML saved: {HTML_PATH}")