Commit Graph

9 Commits

Author SHA1 Message Date
Fam Zheng d964b46dbe cube(chat): apps.json 成 SSOT,注进 chatbot system prompt
deploy cube / build-and-deploy (push) Successful in 1m22s
前端 apps.ts 之前是 source of truth,后端 chatbot 只能用硬编码的
"werewolf / articulate / karaoke / music / simpleasm 等" 句式糊
弄 + 靠训练知识猜。改成 apps.json 当 SSOT:
- 前端 apps.ts 改为 import data from './apps.json'
- 后端 include_str! 同一份 → 解析渲染 markdown bullet 列表
  注进 system prompt,附带 slug / status / desc / url
- prompt 显式约束:只能基于列表事实回答,不存在的 app 直说没有
- 兜底:JSON 解析失败把 raw 文本喂 LLM,不让 chatbot 因为
  ssot 坏掉 500
- 10 个 cargo test(多覆盖 render_apps_list / prompt 含 apps)
2026-05-17 22:56:31 +01:00
Fam Zheng 61abd3f560 notes: 新建 notes.famzheng.me — 录音 → ASR → LLM 会议纪要
deploy articulate / build-and-deploy (push) Successful in 1m21s
deploy cube / build-and-deploy (push) Successful in 1m44s
deploy karaoke / build-and-deploy (push) Successful in 1m13s
deploy music / build-and-deploy (push) Successful in 2m23s
deploy notes / build-and-deploy (push) Successful in 2m16s
deploy simpleasm / build-and-deploy (push) Successful in 1m44s
deploy werewolf / build-and-deploy (push) Successful in 1m7s
- 后端 axum + sqlite (recordings 表):上传 multipart 流式落 PVC;spawn worker pending → transcribing (调 mochi 那边 ASR endpoint, fireredasr2 token, Whisper-style multipart) → summarizing (调 gemma-4-31b-it OpenAI 兼容接口) → done
- 鉴权 middleware:Authorization: token <PASSPHRASE>;audio 流播放 ?token= query 兜底;passphrase 走 k8s Secret 不写死
- 前端 Vue3:首次访问弹 passphrase modal;sidebar 录音列表(带状态 chip)+ content 选中显示音频 + 转写 + markdown 纪要;5s polling 进度
- k8s manifest: ns cube-notes / PVC 30Gi / Ingress notes.famzheng.me / bodylimit 600M;Secret notes-creds = {passphrase, asr_token, llm_token}
- portal apps.ts 加 notes entry
2026-05-17 21:43:44 +01:00
Fam Zheng 802d5beae9 cube(portal): 加 chatbot + create_issue tool
deploy articulate / build-and-deploy (push) Successful in 1m27s
deploy cube / build-and-deploy (push) Successful in 1m52s
deploy karaoke / build-and-deploy (push) Successful in 1m20s
deploy music / build-and-deploy (push) Successful in 2m29s
deploy simpleasm / build-and-deploy (push) Successful in 1m38s
deploy werewolf / build-and-deploy (push) Successful in 58s
入口页右下角浮动 chat — 走 mochi 同款 LLM gateway (gemma-4-31b-it),
单步 tool calling 实现 `create_issue` 调 gitea API 建 fam/cube issue。
LLM_API_TOKEN + GITEA_TOKEN 走 ns 内 secret `chat-credentials`
(kubectl 手工创建,不进 git);gateway URL / model / 仓库地址走 env。
8 个 cargo test 覆盖 prompt / tool schema / tool_call 解析 / 错误。
顺手 git rm --cached 之前漏掉的 tsbuildinfo(已 gitignore)。
2026-05-14 16:46:59 +01:00
Fam Zheng af697ea6d0 cube(portal): werewolf / articulate / karaoke 改 live
deploy cube / build-and-deploy (push) Successful in 58s
2026-05-14 16:11:11 +01:00
Fam Zheng bcdf6c6ba4 cube(portal): list werewolf / articulate / karaoke (pending)
deploy cube / build-and-deploy (push) Successful in 1m22s
deploy articulate / build-and-deploy (push) Successful in 1m26s
deploy karaoke / build-and-deploy (push) Successful in 1m22s
deploy music / build-and-deploy (push) Successful in 2m32s
deploy simpleasm / build-and-deploy (push) Successful in 1m35s
deploy werewolf / build-and-deploy (push) Successful in 59s
三个 partiverse 移植 app 入口,先标 pending — CI 跑过 + k8s rollout
成功后再改 live。
2026-05-14 15:32:28 +01:00
Fam Zheng 5c0d860666 cube(portal): guitar → music (live)
deploy cube / build-and-deploy (push) Successful in 53s
2026-05-10 15:54:53 +01:00
Fam Zheng 1e04655003 ci: 统一 k8s manifest 为 apps/*/k8s/all.yaml
deploy cube / build-and-deploy (push) Successful in 1m11s
deploy piano-sheet / build-and-deploy (push) Successful in 1m44s
deploy simpleasm / build-and-deploy (push) Successful in 1m22s
- 三个 app 的 5 个独立 yaml 合成单文件 all.yaml,多 doc 内显式排序,apply 不再受目录字母序影响(这是 piano-sheet run #49 NotFound 的根因)
- simpleasm/cube workflow 补 Initialize K8s resources 步骤,跟 piano-sheet 对齐;今后 manifest 改动 CI 自动 apply
- cube 的 _registry-ingress.yaml 不再需要前缀绕排序,去掉 _
2026-05-05 10:38:38 +01:00
Fam Zheng 388b505e0b app #1 simpleasm: 从 oci 迁过来,asm.famzheng.me 已上线
deploy cube / build-and-deploy (push) Successful in 1m18s
deploy simpleasm / build-and-deploy (push) Successful in 1m45s
- 后端 FastAPI 重写为 axum + rusqlite (musl static, 2.8MB)
- 前端原样搬运 (Vue3 + Vite + Pinia + vue-router + vite-plugin-yaml)
- k8s: cube-simpleasm ns + 1Gi PVC (k3s local-path) + Recreate strategy
- CI: 复刻 deploy-cube.yml,按 apps/simpleasm/** 触发
- cube 门户里 simpleasm 状态从 pending 改成 live
- 数据冷启 (Fam 拍板不带历史进度)
2026-05-04 15:12:22 +01:00
Fam Zheng 93b6fa3061 app #0: cube.famzheng.me 入口门户 + 平台脚手架
deploy cube / build-and-deploy (push) Has been cancelled
monorepo 第一刀:
- workspace + crates/cube-core(base router / healthz / ServeDir SPA fallback / JSON tracing / SIGTERM shutdown)
- apps/cube:axum 主程序 + Vite + Vue 3 + TS 门户(暗色调 + 渐变 logo + app 卡片网格)
- Dockerfile:scratch + musl 静态二进制,镜像 2.6MB
- k8s/:cube-cube ns + Deployment + Service + Ingress(cube.famzheng.me,traefik LE 自动签)
- registry:新增 registry.famzheng.me ingress 反代到 gitea 内置 container registry,
  自动化身份用 mochi(registry.famzheng.me/mochi/cube)
- CI:.gitea/workflows/deploy-cube.yml,host shell runner(gnoc),
  build → push → kubectl rollout 五步流水
- README:把宪法段改成 monorepo 模式 + monorepo 目录结构
- 新增宪法条款:前端视图状态走 URL(path + query)保证可 bookmark
2026-05-04 11:22:59 +01:00