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
|
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
|
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
|
6bdaeed6d4
|
chore: 忽略 .zcode 本地目录并更新规则表与开发日志
- .gitignore 新增 .zcode/(ZCode 工具本地配置,不入库)
- 更新交通/通信/差旅等财务规则表
- 补充 2026-06-25/26 开发日志(chat UI SaaS 化、主题企业 AI 风格、bug 日志)
|
2026-06-26 22:42:46 +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
|
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 |
|
caoxiaozhu
|
8a2ae6eb75
|
fix(server): gate_classify 复用 _classify_irrelevant_input 修复 off_topic 误杀
回归问题:P1.3 重构时 gate_classify 的 off_topic 门用了 scene_registry
的 35 个 signal_keywords,丢掉了 legacy 的 73 个关键词(城市名/时间词/金额词/
交通词等),导致'下周去上海''昨天打车30块'等正常业务输入被误判 off_topic,
根本进不了 LLM。
修复:gate_classify 的 off_topic 门改用成熟的 _classify_irrelevant_input
(94 词 + registry 信号词 + greeting/meaningless 细分),scene_registry 的
signal_keywords 只用于规则匹配门(CHOICE 路由)。删除残缺的 _matches_any_signal。
验证:76 passed;实测'下周去上海'→llm_function_call、'昨天打车30块'→
llm_function_call、'你好'→off_topic(正确拦截)。
|
2026-06-25 16:06:52 +08:00 |
|
caoxiaozhu
|
992cf71fa1
|
refactor(server): Phase 1 图拓扑重构 - LangGraph 成为唯一编排者
P1.3-P1.7:把 endpoint 补丁搬进图节点,门控收敛到 gate_classify 单一决策点。
- StewardGraphState 扩展:recent_history/steward_state/gate_decision/gate_scene_id/conversation_id
- 新增 5 个图节点:load_context(读历史+state)/gate_classify(统一门控)/execute_scene_handler/resume_recent_task/pending_flow wrapper
- 图拓扑从 5 节点重构为 10 节点:load_context → gate_classify → {off_topic/handler_only/resume/ambiguous/model_intent} → attach_action_steps
- gate_classify 四步裁决:resume门 → off_topic门 → 规则匹配门 → LLM门
- resume 门控优先于 off_topic,避免'再提交'被误判闲聊
- schema 放宽 planning_source/next_action Literal → str,支持 scene_handler:*/context_resume/answer_only
- endpoint 按 planner 类型分发 build_plan(LangGraph 接 db,legacy 不接)
- 76 passed + 4 场景端到端验证(出差申请/再提交/查差旅标准/闲聊)
|
2026-06-25 15:44:20 +08:00 |
|
caoxiaozhu
|
54356ba81a
|
refactor(server): scene 注册表骨架 + 统一门控管道设计文档
Phase 1 P1.1-P1.2:为后端门控收口提供声明式场景注册基础设施。
- 新建 scenes/ 目录:gate_rules(GateRule/SceneRoute 枚举)、scene_descriptor(SceneDescriptor dataclass)、scene_registry(SceneRegistry 单例)
- 3 个场景迁入 descriptor:expense_application / reimbursement / query_travel_standard
- __init__.py 的 bootstrap_scenes 在 import 时注册 + 运行时绑定 handler/builder/executor(解决循环 import)
- 查询场景 priority=50 优先于 MODEL_ONLY 场景,确保规则匹配先于 LLM
- 落地 UNIFIED_GATE_PIPELINE.md 架构文档:目标架构 / 验收标准(接入 O(1))/ 3 阶段迁移路径
- 76 passed,scene 注册表未破坏现有代码;与 intent_registry 暂时并存,P1.3-P1.8 会统一迁移
|
2026-06-25 15:09:16 +08:00 |
|
caoxiaozhu
|
e9d7c56d5b
|
feat(server): 会话上下文保留(LLM 历史 + 确定性兜底双保险)
解决用户删除草稿后说'再提交'丢失上下文的问题:
- steward.py 新增 _inject_recent_conversation_history:build_plan 前读最近 10 条对话注入 context_json
- steward_intent_agent.py 的 _build_messages 把 recent_history 暴露给模型,system prompt 加确认类话术引导
- 新建 steward_context_resume.py:should_resume_recent_task 检测'再提交'类话术 + state 有可恢复 flow,attach_resumed_task 从 state 恢复 task
- 两个 plan 入口(/plans 和 /plans/stream)都已接入双保险
- 后端 67 passed,端到端验证'上海出差→再提交'成功恢复 task
|
2026-06-25 15:08:56 +08:00 |
|
caoxiaozhu
|
2ebc2756bf
|
fix(server): 兼容模型 tasks 输出为 JSON 字符串与 flow_id 误填
- StewardModelPlanBuilder 解析 tasks 时兼容模型把数组序列化为字符串的情况,先反序列化;JSON 截断/语法不完整时用正则抢救 task_type/requested_action/ontology_fields 等关键字段
- task_type 未命中意图时尝试 flow_id→task_type 映射还原,避免模型把 flow_id(如 travel_application)误填为 task_type 导致正确意图被丢弃
|
2026-06-25 12:25:18 +08:00 |
|
caoxiaozhu
|
606a88c805
|
chore: stewardPlanModel 适配注册表动作结构并更新规则表与日志
- stewardPlanModel 适配新的意图注册表动作步骤结构
- 更新交通/通信/差旅等财务规则表,补 2026-06-25 work-log
|
2026-06-25 11:50:11 +08:00 |
|
caoxiaozhu
|
eaada4bc57
|
refactor(server): steward 意图改用声明式注册表编排
- 新增 steward_intent_registry,IntentDescriptor 统一描述意图的识别关键词、动作步骤构建、字段白名单与副作用集合,替代分散的 if/else
- 新增 steward_intent_bootstrap 注册 expense_application 等意图;新增 steward_query_executors 提供差旅标准查询的无副作用执行与城市/席别标签化输出
- action_contracts/action_executor/graph_planner/intent_agent/model_plan_builder/planner_extraction/fallback 适配注册表,识别与执行分发自动从注册表取数
- 新增 intent_registry/query_executors 测试,更新 intent_agent 测试
|
2026-06-25 11:50:02 +08:00 |
|
caoxiaozhu
|
d321005044
|
chore: 更新公司通信费规则表与 AI 意图规划/work-log 文档
|
2026-06-25 10:56:00 +08:00 |
|
caoxiaozhu
|
a12c4bea64
|
chore: 更新公司通信费规则表、work-log 与 superpowers specs 文档
|
2026-06-24 22:59:10 +08:00 |
|
caoxiaozhu
|
a0f6d9f702
|
chore: 更新 .env.example、财务规则表与 AI 意图规划开发文档
|
2026-06-24 21:59:15 +08:00 |
|
caoxiaozhu
|
bb681aa1f3
|
chore(repo): 移除误跟踪的 egg-info 构建产物并新增忽略规则
server/src/x_financial_server.egg-info/ 为 uv/pip 构建产物,此前被误跟踪。
本次 git rm --cached 移除跟踪(本地保留),.gitignore 新增 *.egg-info/ 规则避免后续误入库。
|
2026-06-24 21:59:09 +08:00 |
|
caoxiaozhu
|
5311c99d69
|
refactor(server): steward 决策链路改用 LangGraph 编排
- 新增 StewardGraphPlannerService,用 LangGraph 状态图编排意图识别→流程判断→模型/规则分支→兜底,替代原 planner 内线性调用
- 新增 StewardGraphRuntimeService 编排运行时决策与槽位决策;StewardActionContracts/Executor 统一动作合约与执行
- steward_intent_agent/application_fact_resolver/runtime_chat 适配图执行器,config 暴露图相关开关
- pyproject/uv.lock 新增 langgraph 依赖
- 新增 graph_planner/graph_runtime/action_executor 测试,更新 intent_agent/planner/fact_resolver/runtime_chat/reimbursement 测试
|
2026-06-24 21:58:35 +08:00 |
|
caoxiaozhu
|
545b31d32f
|
chore(env): docker-compose 端口与服务配置微调并更新规则表与日志
- docker-compose(.full).yml 与 start.sh 微调端口/服务配置
- AGENTS.md 同步更新协作规范
- 更新交通/通信/差旅等财务规则表,补 2026-06-24 work-log
|
2026-06-24 12:36:03 +08:00 |
|
caoxiaozhu
|
9a5ed0e94a
|
feat(server): 系统缓存清理接口与 OCR 文本层兜底增强
- 新增 system_cache 模块与 POST /settings/cache/clear,管理员可一键清理 OCR 结果/运行时配置/模型失败冷却/知识库索引/地点语义等进程内缓存
- 各服务暴露 clear_*_cache 方法(ocr/runtime_settings/runtime_chat/knowledge/application_location_semantic),SettingsCacheClearRead 汇总清理项
- OCR 转图片失败时尝试用 PDF 文本层兜底构建识别文档(有效字符≥8),并写结果缓存;OcrService 暴露 clear_result_cache
- receipt_folder 车票过滤补充身份证号关键词,附件文档/操作/展示模块同步适配
- 新增 system_cache_endpoints 测试,更新 openapi_schema/ocr/receipt_folder/attachment_association_jobs 测试
|
2026-06-24 12:35:51 +08:00 |
|
caoxiaozhu
|
0264a4b5b4
|
refactor(server): user_agent/steward/ocr 等服务重构并适配关联任务
- user_agent 拆分 application/locations/knowledge/response/review 四个子模块,接入申请位置语义与关联草稿分支
- steward planner/runtime/slot/plan_builder 决策链路重构,travel_reimbursement_calculator/orchestrator_expense_query 适配
- ocr/document_preview/document_intelligence/receipt_folder 复用预览与资产缓存,expense_claim_draft_flow/application_handoff 适配
- pyproject.toml 新增依赖,paddleocr bootstrap 脚本与 server_start.sh 调整
- 更新差旅/交通/通信等财务规则表,同步 document_intelligence/ocr/receipt_folder/user_agent 等测试
|
2026-06-24 10:42:24 +08:00 |
|
caoxiaozhu
|
332f77389d
|
feat(server): 新增附件关联/关联报销草稿后台任务与申请位置语义
- attachment_association_jobs:从票据夹批量关联附件到报销单,识别城市/日期并创建明细项,内存态 job 跟踪
- linked_reimbursement_draft_jobs:基于申请单异步生成关联报销草稿,调用 Orchestrator 编排,区分 succeeded/failed 终态
- application_location_semantics:抽取差旅出发/到达城市、判断具体地址/业务动作等位置语义,供申请单校验复用
- router 注册两个 job 端点,新增对应 job/语义单元测试
|
2026-06-24 10:42:05 +08:00 |
|
caoxiaozhu
|
73966b3a7b
|
refactor: consolidate finance workflow modules
|
2026-06-23 11:21:18 +08:00 |
|
caoxiaozhu
|
f17098aa58
|
chore(repo): 移除误跟踪的 expense_claims 运行时票据文件
server/storage/expense_claims/ 下 30 个用户上传票据/预览图/meta 此前在 gitignore 规则生效前被误提交,运行时会持续产生内容变更。
本次 git rm --cached 移除版本跟踪(本地文件保留),配合已有 server/storage/expense_claims/ 忽略规则,避免后续误入库。
|
2026-06-23 09:43:07 +08:00 |
|
caoxiaozhu
|
0122f3b250
|
chore(rules): 更新交通/通信/差旅/出差等财务规则表
|
2026-06-23 09:42:43 +08:00 |
|
caoxiaozhu
|
84a8998e59
|
feat(server): 票据文件夹资产缓存与文档预览统一生成
- 新增 document_preview 模块,DocumentPreviewAssets 统一处理 data URL 解码、pdftoppm PNG 预览生成(poppler-data 编码)、renderer_id 标识
- receipt_folder 服务复用预览生成,缓存票据资产并提供清理;删除票据时保留已关联报销单的附件副本
- document_intelligence 新增票据预览/资产缓存接入与字段提取增强;ocr 抽取复用预览工具,附件分析/文档/操作/展示四个子模块同步适配
- receipt_folder 端点补充资产缓存头,补/扩 document_intelligence、ocr_endpoints、ocr_service、receipt_folder_service、reimbursement_endpoints 测试,新增 attachment_analysis 回归测试
|
2026-06-23 09:42:00 +08:00 |
|