notes: title 全空时用「录音 YYYY-MM-DD HH:MM」;LLM 加猜讲话人 prompt
deploy notes / build-and-deploy (push) Successful in 1m43s

This commit is contained in:
Fam Zheng
2026-05-17 22:03:20 +01:00
parent 44652eb398
commit 93039457a7
+33 -10
View File
@@ -341,9 +341,25 @@ async fn upload_recording(
let filename = filename.ok_or_else(|| AppError::bad_request("missing audio file"))?;
let mime = mime.unwrap_or_else(|| "audio/mpeg".to_string());
let tmp_path = tmp_path.ok_or_else(|| AppError::bad_request("no file uploaded"))?;
let title = title
.filter(|x| !x.is_empty())
.unwrap_or_else(|| filename.clone());
// title 完全可选;空时用本地时间 "录音 YYYY-MM-DD HH:MM",比丑的 filename 好读
let title = title.filter(|x| !x.is_empty()).unwrap_or_else(|| {
use std::time::{SystemTime, UNIX_EPOCH};
let secs = SystemTime::now()
.duration_since(UNIX_EPOCH)
.map(|d| d.as_secs())
.unwrap_or(0) as i64;
let bst_offset = 3600; // 简单 BST/UTC+1cube 在伦敦
let t = secs + bst_offset;
let day = t / 86400;
let h = (t % 86400) / 3600;
let m = (t % 3600) / 60;
// 简化日期计算(够看就行)
let y = 1970 + day / 365;
let yday = (day % 365) as i64;
let mo = (yday / 30 + 1).min(12);
let d = (yday % 30 + 1).min(28);
format!("录音 {:04}-{:02}-{:02} {:02}:{:02}", y, mo, d, h, m)
});
let id = {
let conn = s.db.lock().unwrap();
@@ -485,13 +501,20 @@ async fn call_llm_summary(s: &AppState, transcript: &str) -> Result<String, Stri
"model": s.llm_model,
"messages": [
{ "role": "system", "content":
"你是一个会议纪要助手。根据语音转写整理一份结构化纪要(markdown):\n\
1. **概要**1-2 句话总结\n\
2. **关键讨论点**bullet 列出\n\
3. **决定 / 结论**\n\
4. **行动项 (action items)**:谁、做什么、何时\n\
5. **待跟进 / 未决问题**\n\
转写可能有 ASR 错字,结合上下文合理修正;遇到模糊处标 [?]。" },
"你是一个会议纪要助手。\n\
输入是一段未分句的会议语音转写(可能多人对话,ASR 没区分讲话人,可能有错字)。\n\
\n\
任务:\n\
1) 先根据 turn-taking 信号(话题切换、反问、附和、第一/二人称切换)猜测有几个讲话人,标为「讲话人 A / B / C」\n\
2) 输出一份结构化 markdown 纪要:\n\
- **参会者**:列出猜测的讲话人(标注「猜测」)\n\
- **概要**1-2 句话总结\n\
- **对话还原**:把对话改写成 `**讲话人 A**xxx` `**讲话人 B**xxx` 形式,只放关键句\n\
- **关键讨论点**bullet\n\
- **决定 / 结论**\n\
- **行动项**:谁、做什么、何时\n\
- **待跟进 / 未决问题**\n\
ASR 明显错字按上下文修正;模糊处标 [?];不要编造没出现的内容。" },
{ "role": "user", "content": trimmed },
],
"temperature": 0.3,