434 Commits

Author SHA1 Message Date
caoxiaozhu
638b757138 docs(dev-log): add July daily work summaries 2026-07-20 10:31:47 +08:00
caoxiaozhu
b185e58f31 chore(knowledge): ignore tenant runtime storage 2026-07-20 10:31:32 +08:00
caoxiaozhu
2a1a5991cb fix(expenses): refine operation record audit UI 2026-07-20 10:31:27 +08:00
caoxiaozhu
2a9b3e3273 fix(ai): recognize conversational document filters 2026-07-20 10:31:15 +08:00
caoxiaozhu
7a3755ac55 fix(dev-server): limit reload watcher to source 2026-07-20 10:31:00 +08:00
caoxiaozhu
aa6a7d1250 fix(agent-assets): save rule markdown atomically 2026-07-20 10:30:48 +08:00
caoxiaozhu
208e1bed59 fix(audit): expose rule management permission state 2026-07-20 10:30:35 +08:00
caoxiaozhu
140efd1a2a fix(agent-assets): allow admin access to platform rules 2026-07-20 10:30:22 +08:00
caoxiaozhu
74fafc86d3 fix(runtime): provision local document and vector services 2026-07-20 10:30:08 +08:00
caoxiaozhu
15da295963 fix(settings): reconcile secret status and model drafts 2026-07-20 10:29:49 +08:00
caoxiaozhu
044a5669fe fix(employees): preserve age across birthday boundaries 2026-07-20 10:29:42 +08:00
caoxiaozhu
c59990dc35 fix(auth): bind admins to enterprise tenant context 2026-07-20 10:29:30 +08:00
caoxiaozhu
372e35d62a fix(migrations): repair tenant identity lookup indexes 2026-07-20 10:28:31 +08:00
caoxiaozhu
07241b4648 fix(docker): manage local postgres in default compose 2026-07-17 22:50:02 +08:00
caoxiaozhu
787bc3a481 feat(platform): close AI expense value loop
Add tenant-safe value, telemetry, connector, commercial, and production-readiness foundations.
2026-07-17 14:14:08 +08:00
caoxiaozhu
242d68c36f feat(approval): add task workflow and waiver decisions 2026-07-16 16:52:12 +08:00
caoxiaozhu
28b834edd3 fix(approval): replay immutable action responses 2026-07-16 15:49:43 +08:00
caoxiaozhu
4940ebc419 feat(approval): add safe risk disposition workflow 2026-07-16 15:34:58 +08:00
caoxiaozhu
ee88a36baf feat(ai): add tenant-safe hierarchical expense learning 2026-07-16 14:30:41 +08:00
caoxiaozhu
6bdf65bc24 feat(expenses): add authoritative pre-review workflow 2026-07-16 11:42:08 +08:00
caoxiaozhu
ae3f02c35a feat(expense): add persistent zero-entry receipt association 2026-07-16 10:23:23 +08:00
caoxiaozhu
54754b5502 feat(ai): add personal expense application memory 2026-07-14 17:16:23 +08:00
caoxiaozhu
211f85d981 feat(ai): unify verified expense application workflow 2026-07-14 16:03:05 +08:00
caoxiaozhu
5b24630710 feat(ai): issue verified application preview decisions 2026-07-14 14:37:53 +08:00
caoxiaozhu
a662cfe6c3 feat(ai): add expense application feedback ledger 2026-07-14 11:10:55 +08:00
caoxiaozhu
5ed34c2b8f feat(expenses): backfill historical claims into expense cases 2026-07-14 10:09:09 +08:00
caoxiaozhu
11275e4ba6 fix(migrations): enforce schema ownership safety 2026-07-14 09:23:34 +08:00
caoxiaozhu
1347366b95 feat(expenses): secure timeline and draft events 2026-07-14 00:07:07 +08:00
caoxiaozhu
22669a9071 feat(expenses): show unified expense event timeline 2026-07-13 16:58:51 +08:00
caoxiaozhu
a616b30cb2 fix(expenses): unify AI application submission transaction 2026-07-13 15:35:08 +08:00
caoxiaozhu
653eda0596 feat(auth): add opaque bearer sessions 2026-07-13 14:45:36 +08:00
caoxiaozhu
661990b27b feat(expenses): add transactional expense case events 2026-07-13 11:58:48 +08:00
caoxiaozhu
9a84e125d0 merge: 飞轮 2 golden set 回归门禁
# Conflicts:
#	server/src/app/models/__init__.py
2026-07-03 14:41:40 +08:00
caoxiaozhu
3a5fc3c09f merge: 飞轮 1 few-shot 在线检索注入 2026-07-03 14:40:09 +08:00
caoxiaozhu
c7ba7bb453 feat(flywheel): golden case 管理 API 与评测单测
- 新增 GoldenCaseCreate/Read、GoldenEvalRequest/Read schema
- 新增 3 个端点:创建 golden case、按规则列表、手动触发 golden 评测
  (不入门禁,供运营试跑)
- 单测 15 passed:单条 hit/severity 比对、集合 accuracy/precision/recall
  聚合、空集降级、100% 通过/失败拦截、feature flag、异常降级
- 回归 test_agent_asset_service 27 passed(1 个预存失败与本改动无关)
2026-07-03 14:38:43 +08:00
caoxiaozhu
67c3f30eb2 feat(flywheel): golden set 回归门禁拦截风险规则发布
- 新增 RiskRuleGoldenEvaluator:在 GoldenCase 集上跑规则 manifest,复用
  RiskRuleTemplateExecutor + _build_synthetic_claim,输出
  accuracy/precision/recall,按 100% 通过硬阈值判定
- require_pass 门禁入口:未通过抛 PermissionError 并写
  AgentAssetTestRun(test_type=golden) 记录;空集/异常/feature flag 关闭
  一律降级放行,不阻塞发布主链路
- _publish_reviewed_working_version 在 test_passed 校验后接入门禁
  (修订版 _publish_revision 留待下一轮)
2026-07-03 14:38:26 +08:00
caoxiaozhu
73aee622c7 feat(flywheel): 新增 GoldenCase 模型用于规则回归门禁
- 新增 golden_cases 表,承载版本化的风险规则黄金用例
  (case_key/rule_code/values_json/expected_hit/expected_severity/status)
- 注册到 db/base.py 和 models/__init__.py,进入 Base.metadata
2026-07-03 14:38:14 +08:00
caoxiaozhu
52d57c3be7 test(flywheel): 补 few-shot 飞轮单测并沉淀开发文档
- embedding_provider:GLM/Ollama 分支、维度缓存、HTTP 错误降级
- few_shot_ingestion:confirmed/false_positive 入库、ignored 跳过、幂等去重、
  create_feedback hook 触发、feature flag、吞异常
- few_shot_retrieval:去重、token 预算、超长截断;prompt 注入合并 examples + 向后兼容
- 容器内新增测试 20 passed;回归测试 35 passed(RAG/risk_observations/rule_generation)
- 沉淀 document/development/2026-07-03/feature/ai-data-flywheel 概念文档与 TODO,
  飞轮 1 已勾选证据,飞轮 2-6 待后续迭代
2026-07-03 13:56:21 +08:00
caoxiaozhu
3a9d154783 feat(flywheel): few-shot 在线检索注入打通风险规则编译链路
- 新增 FewShotStore:独立 Qdrant collection few_shot_samples,向量 upsert/search/delete,
  全程失败降级不阻塞主链路
- 新增 FewShotIngestionService:RiskObservation confirmed/false_positive → FewShotSample +
  向量,带 sample_key 幂等去重
- 新增 FewShotRetriever:按 case 特征检索相似历史样本,去重 + token 预算 + 单条字符上限裁剪
- risk_observations.create_feedback commit 后挂 hook 自动入库,带 feature flag 和 try/except 兜底
- risk_rule_generation_prompt 新增 few_shot_samples 可选参数,合并进 examples 并标
  source=historical_confirmed;risk_rule_generation 构造 prompt 前调 retriever,失败降级为空
2026-07-03 13:55:52 +08:00
caoxiaozhu
765cfb40f3 feat(flywheel): 抽公共 EmbeddingProvider 并新增 FewShotSample 模型
- 从 knowledge_rag_runtime 抽出 embedding 调用逻辑为独立 EmbeddingProvider,
  复用现有 HTTP 纯函数,RAG 路径零回归
- 新增 FewShotSample 表模型(样本池),注册到 db/base.py 和 models/__init__.py
  供 few-shot 飞轮沉淀已确认风险观测
2026-07-03 13:55:39 +08:00
caoxiaozhu
08f023243e fix(web): 多 task 草稿自动保存后继续推进下一 task
useWorkbenchAiApplicationPreviewFlow 在自动保存草稿分支透传 onApplicationActionCompleted,
确保草稿/提交完成后仍能按 remaining tasks 推进,修复多 task 报销场景后续步骤不启动。
更新 application-context-submit/intent-planner-model 测试,补充 bug 日志与开发日志。
2026-06-29 20:17:36 +08:00
caoxiaozhu
6bdaeed6d4 chore: 忽略 .zcode 本地目录并更新规则表与开发日志
- .gitignore 新增 .zcode/(ZCode 工具本地配置,不入库)
- 更新交通/通信/差旅等财务规则表
- 补充 2026-06-25/26 开发日志(chat UI SaaS 化、主题企业 AI 风格、bug 日志)
2026-06-26 22:42:46 +08:00
caoxiaozhu
d5a8f84703 refactor(web): 应用外壳/差旅详情/报销创建视图适配主题与多 task
- AppShellRouteView/useAppShell 适配主题皮肤与会话入口
- TravelRequestDetailView/travelRequestDetailSetup 差旅详情适配,travel-request-detail-view.css 调整
- TravelReimbursementCreateView/useTravelReimbursementCreateViewLifecycle 创建视图适配
- 更新 app-shell-financial-assistant-entry/travel-request-detail-risk-advice 测试
2026-06-26 22:42:29 +08:00
caoxiaozhu
c4b5fcc067 feat(web): AI 工作台多 task 串行推进与会话适配
- useWorkbenchAiApplicationPreviewFlow/useWorkbenchAiActionRouter/useWorkbenchAiCommandIntents 支持 task1 完成后自动推进 task2,确认按钮直接拉起申请预览,草稿/提交成功后继续推进下一 task
- workbenchAiIntentPlannerModel/workbenchAiMessageModel/workbenchAiCommandIntentModel 适配多 task 意图规划与消息结构
- aiApplicationPreviewActions/aiApplicationPrecheckModel/aiExpenseDraftModel/aiWorkbenchConversationStore 草稿与会话存储适配
- PersonalWorkbenchAiMode 与样式适配,更新 preview-actions/expense-draft/conversation-store/fast-preview/action-router/command-intent/intent-planner 测试
2026-06-26 22:42:23 +08:00
caoxiaozhu
5753899eb3 feat(web): 主题皮肤系统与 LLM 设置面板重构
- useThemeSkin 重构主题皮肤应用逻辑,支持企业 AI 风格主题切换
- settingsModelHelper 新增主题与模型表字段映射,useSettings 适配
- LlmSettingsPanel/SettingsView 面板重构,支持多模型行编辑与主题区块
- settings-view.css 适配主题样式,新增 settings-theme-section 测试,更新 settings-llm-section 测试
2026-06-26 22:42:00 +08:00
caoxiaozhu
9c3fa80d22 feat(server): 设置持久化新增 LLM 模型表与主题字段
- SettingsLlmForm 新增 models 列表(SettingsModelRow:slot/provider/url/apiKey/modelId/type),支持多模型行持久化
- settings 服务读写模型表与主题相关字段,更新 test_settings_persistence 测试
2026-06-26 22:41:40 +08:00
caoxiaozhu
43c3ff860c fix(web): steward plan 确认按钮直接拉起申请预览,不丢失 remaining tasks
根因:steward plan 的'确认创建申请单'按钮 action_type 是
ASSISTANT_SCOPE_ACTION_SWITCH,handleInlineSuggestedAction 没有匹配分支,
落到 startInlineConversation 重新发起对话,steward_remaining_tasks 完全丢失。

修复:当 payload 有 steward_current_task + session_type=application +
task_type=expense_application 时,直接调 startAiApplicationPreviewFromAction
(会透传 steward_remaining_tasks 到申请预览 message),不走 startInlineConversation。

这样保存草稿成功后,targetMessage 上有 stewardRemainingTasks,
buildApplicationPreviewNextTaskAction 能生成'继续处理费用报销'按钮。
2026-06-26 11:40:44 +08:00
caoxiaozhu
3e4b1e1597 fix(web): 保存草稿/提交成功后也推进到下一个 task
之前多 task 串行推进只在 steward action 执行链(executeInlineStewardAction)
生效,但保存草稿走的是 application preview 流(executeInlineApplicationPreviewAction),
成功后只显示'查看单据',不会提示继续下一个报销 task。

- startAiApplicationPreviewFromAction 透传 steward_remaining_tasks 到 preview message
- startAiApplicationPreview 把 stewardRemainingTasks 存到 message 上
- executeInlineApplicationPreviewAction 成功后:检查 targetMessage.stewardRemainingTasks,
  有剩余 task 则追加'继续处理费用报销'按钮(复用 steward_confirm_flow 分支)
- 新增 buildApplicationPreviewNextTaskAction 辅助函数

现在保存草稿/提交申请成功后,用户会看到:[查看单据] [继续处理费用报销]
2026-06-26 11:21:16 +08:00
caoxiaozhu
3a5664c4da feat(web): 多 task 串行推进 - task1 完成后自动展示 task2 确认按钮
场景:'出差并且报销招待费'→LLM 拆出 2 个 task→先做完出差申请→
完成后自动展示'继续处理费用报销'按钮→用户确认后推进到报销流程。

- 新增 buildNextTaskSuggestedAction:从 actionPayload.steward_remaining_tasks
  取第一个剩余 task,根据 task_type 生成推进按钮(steward_confirm_flow)
- executeInlineStewardAction 成功后:除'查看单据'外,追加'继续处理下一个 task'按钮
- 用户点击推进按钮复用 handleInlineSuggestedAction 的 steward_confirm_flow 分支
- 前端 28 passed 无回归
2026-06-26 10:51:43 +08:00
caoxiaozhu
d139a63e64 refactor(server): 意图识别改 LLM 驱动,规则只做闲聊拦截+resume 兜底
规则不再判断'这是哪个业务场景'——那交给 LLM function call。
规则只保留两个不可替代职责:闲聊拦截(省 LLM 成本)、resume 确定性兜底。

- gate_classify 简化:删掉规则匹配门(94 词 CHOICE 匹配)和 ambiguous 提前判断
- 新增 _is_lightweight_off_topic:只拦 greeting+meaningless,不依赖业务关键词
- HANDLER_ONLY 改为 LLM 输出驱动:LLM 返回 query_travel_standard 后转 handler
- 图拓扑简化:gate_classify 只输出 off_topic|resume|model_intent
- 验证:76 passed;复合场景'出差并且报销招待费'→LLM 返回 2 task
2026-06-26 10:19:04 +08:00