443 Commits

Author SHA1 Message Date
ymq
fcb56fb814 fix(security): cockpit跨租户门禁(2026-09-18银联事故实锤)——①picker全表无过滤改本产线+本人创建(旧版任何登录用户可枚举全部机构项目);②context_update加归属校验(同机构+本人创建,owner.superuser放行),堵'他机构项目id写进自己会话指针→工作空间/读文件越权'链 2026-09-18 13:23:59 +08:00
ymq
964f475067 feat(workspace): xlsx在线查看/编辑接入(2026-09-18用户要求)
- office_read.dspy: 按扩展名分流——xlsx/xlsm调univer-office的xlsx-to-workbookdata
  返回workbookData;docx原链路不变(顺带f-string改拼接合规)
- office_save.dspy: workbookData/documentData双字段分流,xlsx调workbook-data-to-xlsx回写
- workspace_view/open.dspy: office_exts扩为['.docx','.xlsx','.xlsm'],
  xlsx与docx同享在线查看(mode=view只读)+在线编辑+下载按钮
- 配套: univer-office仓11d83bc(IWorkbookData双向转换器+sheets插件+44断言往返自测)
2026-09-18 10:59:51 +08:00
ymq
0438a9c4b5 feat(workspace): office文件查看/编辑均univer在线+弹窗顶部下载按钮(2026-09-18用户要求)
- workspace_view.dspy(查看): docx从'需下载后查看'提示弹窗改为univer在线查看
  (mode=view只读,无保存按钮)+顶部'⬇下载'按钮+只读提示文案
- workspace_open.dspy(编辑): 保留univer在线编辑,顶部加'⬇下载'按钮+保存引导文案
- 布局: VBox filler→工具行HBox+Iframe filler(高度链完整)
- univer_url/file_url均沿用_fq_s双透传(session_id+pipeline_id)
- 配套: univer-office前端main.ts mode=view不渲染浮动保存按钮(独立部署)
2026-09-18 08:59:34 +08:00
ymq
7a6185f937 fix(workspace): 工作空间「查看」媒体文件直接播放(2026-09-18用户要求)——workspace_view.dspy原只渲染txt/md/json,视频/音频/图片全落'其他→下载查看'弹提示;补媒体分支:video_exts→VideoPlayer/audio_exts→AudioPlayer/image_exts→Image控件直接播放(三控件均已注册bricks.Factory,声明式widgetBuild可解析;workspace_file.dspy的FileResponse支持Range请求可拖进度);扩展名覆盖对齐workspace_open.dspy(编辑入口本就播放,查看入口补齐) 2026-09-18 08:27:45 +08:00
ymq
b02ee5f345 fix(workspace): 二级URL与office端点透传pipeline_id+_generic分支——通用助手查看/编辑文件报'文件不存在'根因
与 f0c4c10(upload_url) 同族缺陷全量排查修复,共5处:
1. workspace_view.dspy: md_url(file_url)只拼session_id漏pipeline_id→
   通用助手(_generic无session_id)下MdWidget二次请求workspace_file.dspy
   回退全局项目指针→在别产线空间找文件→弹'文件不存在: projects/调研1/docs/xxx.md'
   (2026-09-17实测复现+修复验证)
2. workspace_open.dspy: file_url/ws_url(xterm)/univer_url三处同病灶,统一_fq_s双透传
3. workspace_edit.xterm: 根本不读pipeline_id且用无隔离get_project_dir→
   改get_project_dir_pl+_generic锁_general/{uid}(与9个子端点对齐)
4. office_read.dspy/office_save.dspy: 读了pipeline_id但缺_generic分支→
   通用助手在线编辑docx报'未指定文件或无工作空间',补齐分支
univer-office前端main.ts配套透传pipeline_id(独立仓库另行部署)
2026-09-17 23:27:19 +08:00
ymq
6b326e5563 feat(todo): 交付确认待办补退回重做按钮(2026-09-17用户报障:bid_delivery_confirm只有确认单按钮无退回通道)——对齐tech_template_confirm双按钮模式:确认交付(human_task_complete)+退回重做(/pipeline-bidding/api/bid_delivery_reject.dspy,意见必填前端拦截);非pending状态渲染'已处理'不再出按钮;TYPE_LABEL/TYPE_COLOR补bid_delivery_confirm与material_supply映射(todo_detail+my_todos_popup两处) 2026-09-17 22:25:56 +08:00
ymq
f0c4c10f79 fix(workspace): 上传端点透传pipeline_id——通用助手(_generic)工作空间上传报'目标目录不存在'根因
workspace_files.dspy 构造 upload_url 只带 session_id 不带 pipeline_id,
通用助手入口(pipeline_id=_generic、无session_id)下 workspace_upload.dspy
走不到 _generic 分支→回退全局 current_project_id(其他产线项目)→
resolve到别的项目目录→'目标目录不存在: projects/调研1'。
对齐 tree/files/delete 端点的 session_id+pipeline_id 双透传模式。
2026-09-17 实测:不带pipeline_id复现报错,带pipeline_id=_generic上传成功。
2026-09-17 21:30:20 +08:00
ymq
bc4ee5827e feat(secret): AgentIO 注入敏感信息选择窗配置(2026-09-17)
index.ui(chat_io) + index_cockpit.ui(chat_input) 两处 AgentIO options 加
secret_dataurl/secret_format/secret_title/secret_tip,指向 pipeline_core 的
secret_options.dspy。驾驶舱会话可用钥匙图标插入 @@sec:NAME@@ 占位符。
2026-09-17 15:45:17 +08:00
ymq
b7b49a766c chore: commit pending local changes (2026-09-17 github sync) 2026-09-17 13:45:54 +08:00
ymq
f05d95b8ac fix(project_file): path/project_id循环unquote兼容前端双重编码——bricks.tget对已编码query值再encodeURIComponent一次(双重编码),服务端只解一层残留%XX编码态中文→项目名_ident_ok校验失败误报'非法路径'(2026-09-16投标标书md在线查看实测根因;下载走window.open单层编码不受影响,故只有在线查看中招)。对齐workspace_view.dspy的_decode_id循环解码到无%。共享端点:task_io/todo_detail/workspace全部md在线查看一并根治 2026-09-16 15:13:37 +08:00
ymq
28a26dc01f fix(todos): 标书md与docx同名产物都给出——交付确认待办按basename派生.md/.docx两候选,实际存在的才出行(md在线查看+docx下载);原单向md→docx补全在file_path已指向docx时漏掉md行 2026-09-16 14:57:39 +08:00
ymq
488cf8a30b fix(todos): 两处待办交互缺陷(2026-09-16甘肃项目实测)——①bid_delivery_confirm分支只渲染文件行忘了action按钮(通用兜底被elif挡住)→交付确认待办成死卡片无法确认;补'确认交付'按钮(可选备注+二次确认,走human_task_complete,done后对账器G段自动delivered+completed)+标书docx同名产物一并给出 ②_file_link_row md/txt点'打开'曾window.open(project_file.dspy)→浏览器不能渲染md落成以URL名命名的下载;改PopupWindow+widgetBuild(MdWidget md_url)在线查看(对齐cockpit_cards实证模式与2026-09-03交付件渲染规范),office类如实标'下载查看' 2026-09-16 14:50:02 +08:00
ymq
24a66fdaf3 feat(todos): material_supply待办标签色(投标实体材料缺口信息流待办,2026-09-16机制五连修配套) 2026-09-16 12:01:26 +08:00
ymq
eb49b18597 fix(todos): 待办列表项目列显示名称——孤儿待办(项目已删)兜底显示「(项目已删除)」不再显示裸项目编号(2026-09-15用户指令) 2026-09-15 16:46:45 +08:00
ymq
9d49ccdc14 feat(todos): 技术方案骨架确认待办分支(tech_template_confirm,投标批2)——todo_detail渲染确认/驳回按钮(端点走pipeline-bidding自持api,驳回必填意见),my_todos_popup补标签色 2026-09-15 14:59:52 +08:00
ymq
6a10e80794 feat(sdlc): 当前项目过滤会话级化——task_tree改get_session_project_id(session优先→全局兜底+产线隔离),删只读全局的旧实现;workspace_popup无项目提示升级'选择或新建'带直达按钮(新建项目/切换项目,调agent_project_popup);根节点提示文案统一 2026-09-11 18:29:31 +08:00
ymq
6b4d893689 feat(todos): 钱包余额不足待办分支(source=llm_wallet,2026-09-11)——红色「钱包充值」badge,详情走pipeline-llm自持llm_wallet_todo_popup.dspy(弹窗内直接充值);状态派生待办充值到账自动消失 2026-09-11 15:30:53 +08:00
ymq
4e621852da feat(sdlc): 流程裁剪确认UI——flow_plan_confirm.dspy确认/驳回端点(用户专属,agent无确认权);todo_detail/my_todos_popup加flow_plan_confirm待办分支(裁剪方案对照+风险提示+确认/驳回按钮) 2026-09-11 12:58:26 +08:00
ymq
4e2a10a84b chore(models): git rm sd_conversations.json——死表定义删除(08-01后零写,回放已走pipeline_conversations;DROP见pipeline-app m0027,批评会决议) 2026-09-10 19:06:09 +08:00
ymq
f179a12d23 feat(cockpit): 上传图片走原生视觉多模态——is_image分流不进文本上下文,
image_paths传gateway;_loc提示图片单列(read_file不支持读图,内容已多模态注入,
后续处理用invoke_model i2t),消除二进制无法读取的矛盾提示
2026-09-10 18:36:55 +08:00
ymq
3465825d38 feat(todos): 待办弹窗按source=ticket分流——工单badge(青)+详情指向/ticket/api/ticket_detail_popup.dspy?from_todo=1
配合pipeline-service的register_todo_provider(工单模块注入): 平台待办通道新增工单来源,
客户回复待确认/运维待认领/受理人待处理 统一在头部角标+待办弹窗异步通知
2026-09-10 16:14:39 +08:00
ymq
3e8789998d docs(r5): README移除已迁出的sd_projects,补三表迁出说明与绝对路径消费约定 2026-09-10 14:32:22 +08:00
ymq
0a339a2b19 refactor(ownership): 三张跨产线表定义删除不留副本(第2轮迁归属,已迁入pipeline-core@4b2fd4c)
- models: sd_projects/sd_project_role_models/pipeline_deliverables 3个JSON删除——归属core,双源必乱
- json: sd_project_list/pipeline_deliverables_list CRUD定义删除(迁core)
- wwwroot/api: 15个CRUD页面依赖的dspy删除(随页面迁core,entire_url相对解析跟页面走)
- wwwroot/sd_project_role_models: 手写角色模型页整目录删除(迁core)
- scripts/load_path.py: 已迁页面的RBAC注册条目删除(sd_projects 5条/sd_project_list 1条/role_models 5条/api 4条)
- json/sd_iteration_list+sd_deploy_env_list+sd_features_list: get_project_options.dspy引用改绝对路径/pipeline_core/api/**(留在sdlc的页面消费迁走的api)
- wwwroot/api/cockpit_cards.dspy: 项目管理弹窗URL改/pipeline_core/sd_projects/index.ui
- init/data.json: 4组字典随表迁core(sd_project_status/sd_project_type/deliverable_type/review_status)
- .gitignore: 已迁生成目录条目清理(sd_projects//pipeline_deliverables/)
- 顺带清死双源: wwwroot/json/整目录(build.sh只读模块根json/,wwwroot/json零消费方+内容漂移:subtables还指着改名前的目录)+wwwroot/sd_project_list/index.ui死占位页(零菜单引用)
2026-09-10 12:33:42 +08:00
ymq
31212038d2 fix(models): sd_projects.pipeline_id默认值去SDLC语义(sdlc_general→general)——与m0018同概念收尾,project_type已general而pipeline_id仍sdlc_general两个默认值语义自相矛盾;pipeline_id是workspace space名(GENERAL_SPACE='general')与能力包挂载键,查证core/agent_config.py:454 get_ability('general')返回None=通用项目不挂产线能力(正确语义),旧默认会让通用项目错挂SDLC能力 2026-09-09 19:26:38 +08:00
ymq
b13b060e10 fix(models): sd_projects补directory_name/default_model列定义——两列只存在于m0001手工迁移models从未定义,新机create_tables按models建表缺列,workspace.py裸查directory_name必崩Unknown column(部署炸弹);project_type默认值去SDLC语义web_app→general(sd_projects是全产线共用项目容器,商机/投标项目被错标Web应用);码表补general/bidding两项(bidding已在数据中却翻译不出) 2026-09-09 19:15:40 +08:00
Pipeline Agent
f82d6be549 chore: gitignore 运行时技能目录(orgs/users/projects)——agent实时发布的机构/用户技能是运行时数据不入库 2026-09-09 00:02:36 +08:00
ymq
3e8ff730af feat(mobile): workspace八端点加_generic模式——通用会话锁用户专属目录_general/{uid},不进入任何项目工作空间(2026-09-08用户要求) 2026-09-08 16:01:14 +08:00
ymq
0f73a33b4e feat(models): sd_org_settings add agent_config column (was runtime ALTER only) 2026-09-08 15:24:49 +08:00
ymq
a38e6d9141 feat(mobile): my_todos_popup加embed=1整页渲染分支——手机端待办Tab直接整页VBox(不套PopupWindow弹窗壳),弹窗模式(桌面todo_badge)行为不变(2026-09-07手机端适配) 2026-09-08 14:28:55 +08:00
ymq
351de4c3cd docs(readme): 补宿主入口规范名 load_pipeline_sdlc 说明(标准入口 init.py,旧名 load_sdlc_adapter 为别名) 2026-09-07 14:59:27 +08:00
ymq
af2dd7bdd4 refactor: load_sdlc_adapter 规范化为 load_pipeline_sdlc+新增标准入口 init.py(load_<模块名>约定,保留旧名别名) 2026-09-07 13:57:43 +08:00
ymq
0cf735018e feat(cockpit): 会话agent模型选择收窄为对话能力t2t/i2t/m2t(2026-09-06用户定夺)——下拉传capabilities=chat,持久化入口(set_agent_model/cockpit_agent)同守卫防绕过 2026-09-06 19:49:08 +08:00
ymq
2740ae1451 fix(cockpit): 完毕行样式改平铺color 2026-09-05 11:07:17 +08:00
ymq
966340dbe0 feat(cockpit): 对话应答结束后追加完毕行(Text otext+i18n) 2026-09-05 10:59:03 +08:00
ymq
8c4feac27f chore: 移除临时诊断端点kb_diag4(建议入库闭环验证完毕) 2026-09-04 19:55:09 +08:00
ymq
a1ddf7a9ca tmp: kb_diag4修正SQL参数 2026-09-04 19:52:54 +08:00
ymq
97d1f7aec4 tmp: kb_diag4验证PM建议入库链路 2026-09-04 19:52:02 +08:00
ymq
6c9dd5e5e3 chore: 移除临时诊断端点kb_diag*(链路验证完毕) 2026-09-04 19:50:57 +08:00
ymq
e9d35b86e3 tmp: kb_diag3抓应用内自调用请求细节 2026-09-04 19:44:20 +08:00
ymq
acbb936585 tmp: kb_diag2诊断Bearer认证链 2026-09-04 19:40:29 +08:00
ymq
74e38d2ef3 tmp: kb_diag诊断端点(验证owner-key-检索链路,用后即删) 2026-09-04 19:37:41 +08:00
ymq
dc4a3383f9 fix(cockpit): 修复驾驶舱页裸JSON显示——.ui内嵌Html widget的<script>字面量被浏览器HTML解析器提前闭合外层script致widget JSON外泄为可见文本;转义为\u003c(运行时DOM设置不受影响) 2026-09-04 18:44:27 +08:00
ymq
e485d2d30d refactor(llm): 模型选择收敛到模型治理模块——cockpit_model_options/get_model_options改薄壳委托;set_agent_model/cockpit_agent模型解析改走llm_resolve_model_name,不再自查旧llm表 2026-09-04 17:05:50 +08:00
ymq
9f5fbdacfc feat(todo): 知识库入库建议待办——todo_detail渲染kb_ingest_confirm+kb_ingest_decide端点 2026-09-04 15:58:14 +08:00
ymq
c2c89ef680 fix: 工作空间端点id多层URL解码(中文文件名'文件不存在'根因)+json查看渲染正文不下载(全产线共享端点) 2026-09-03 18:57:08 +08:00
ymq
6ae036217f feat: task_io状态颜色/终态列表补qc_rejected 2026-09-03 17:31:38 +08:00
ymq
624a820417 feat: task_io 交付件改共享渲染(md→MdWidget+下载,office/pdf→下载) 2026-09-03 16:41:28 +08:00
ymq
9045323adb feat: 待办交付确认补标书文件链接(bid_delivery_confirm);project_file放宽到项目空间层校验(兼容旧平铺结构)+路径含项目标识防越权 2026-09-02 11:56:50 +08:00
ymq
36c4132b02 feat: 待办输出文件给打开/下载链接——新增project_file.dspy按项目ID解析文件(路径穿越+机构隔离校验),待办详情文件区渲染链接按钮 2026-09-02 11:46:09 +08:00
ymq
9eca0ca3d9 refactor: 删除模块级agent_input.js副本——框架版(bricks)已是严格超集(多padding/enter_sends/session_id注入),副本加载在后反而覆盖框架新版致回车发送不生效 2026-09-01 17:39:13 +08:00