44 Commits

Author SHA1 Message Date
73c87b72a6 fix(mining-ui): 类别排名弹窗补auto_open+resizable(对齐opp_demand_items范式)——modal:True无auto_open致PopupWindow渲染display:none不可见,实测DOM在位rect=0定位 2026-09-12 11:14:55 +08:00
25348fa2e1 feat(mining-ui): P2需求挖掘三级下钻UI——⛏需求挖掘菜单(无require_project,平台级批次也可见)→批次列表(启动全量/指定类型按钮+状态色标+done行下钻)→类别排名PopupWindow(排名/占比/命名依据)→类内明细(每条带来源,src_id复用opp_item_detail详情弹窗);opp_mining_start.dspy复用start_mining与工具通道同实现;cluster_detail补src_id字段;load_path注册4端点 2026-09-12 11:00:49 +08:00
3fadee97b9 docs: README+模块技能同步项目归属口径(挖掘分项目,可见性对齐opp_reports,E2E 11项全过) 2026-09-12 09:06:54 +08:00
02b904164e test(mining): 项目隔离E2E脚本——11项断言(批次落项目/跨项目批次+类别+明细三层拒绝/B列表不含A/存量归平台级/无项目会话只见平台级)全过 2026-09-12 09:05:52 +08:00
8b7626dc83 feat(mining): 挖掘批次/类别落项目归属(用户确认商机产线分项目)——opp_mining_batches/opp_clusters加project_id(空=平台级挖掘),可见性对齐opp_reports口径(挂项目仅本项目会话可见/平台级本机构可见/无项目只见平台级),_check_batch_visible单一规则源status/list_clusters/cluster_detail复用;补列脚本information_schema守卫幂等 2026-09-12 09:02:04 +08:00
058c5f5235 docs(skill): 模块自述技能+README同步P1需求挖掘——4工具/架构图/机构隔离定夺/VDB协议/性能铁律(串行540s→并发60s)/params种子/验证脚本用法 2026-09-11 23:32:00 +08:00
bc6790a03a perf(mining): LLM簇命名串行→并发(Semaphore限5)——实测42簇串行命名540s占批次全程551s,并发后应~1/5;params种子段(τ/topk/min_cluster/big_split/keep_batches/embed_batch/cache_col,build.sh 2b幂等导入,已存在不覆盖);README同步挖掘架构文档 2026-09-11 23:23:06 +08:00
f1eab971cb feat(mining): P1需求挖掘投产线能力包——opp_mining(VDB客户端/增量embedding缓存/批次工作集/kNN图/τ并查集/大簇细分/LLM命名+规则兜底)+opp_mining_flow(状态机编排pulling→embedding→clustering→naming→done,后台create_task,进度实时落库,失败可行动报错)+4工具(start_mining/mining_status/list_clusters/cluster_detail)+OPP_PROMPT挖掘工作流;共享缓存collection全机构复用嵌入,批次/类别org_id隔离;gen_ddl.sh修死路径+DDL重生成5表 2026-09-11 23:04:35 +08:00
091d9db02d feat(mining): P1聚类质量分析脚本——多τ对比(0.70/0.75/0.82/0.88)+超大簇(>150)质心二次细分(τ+0.10)+向量/kNN文件缓存(省embedding费用)+样例去重;2075条真实数据实测167s,τ=0.75为最优拐点(42簇,top1=8.2%微信小程序,语义纯净无失控巨簇) 2026-09-11 22:49:56 +08:00
4ad5dfda81 feat(mining): P1聚类算法验证脚本(真实数据)——爬虫拉全量需求→rag_client Bearer embedding(10条/批,3次退避)→VDB kNN(pagerows=30)→τ阈值并查集聚类→小组质心并入→簇质量报告;坑:cookie会话401(Secure标志+aiohttp拒发http),生产路径Bearer不受限;独立脚本须initEnv()注入password_decode 2026-09-11 22:41:52 +08:00
b10ef50661 feat(mining): P1需求挖掘3表models(批次/快照/类别)+幂等建表脚本+P0 VDB/embed探测脚本——org_id机构隔离,scope支持top/targeted,heat_rank避开MariaDB保留字,double带length+dec精度 2026-09-11 22:22:02 +08:00
5c37341f4c feat(opp): 当前项目过滤——opp_reports_list只显示当前项目报告+平台级调研(未挂项目),无项目提示'选择或新建'带直达按钮;opp_approvals get注入会话级强制过滤;三菜单加require_project门禁 2026-09-11 18:29:52 +08:00
09d77f7483 fix(ppt): 表格行高按内容估算逐行设置——显式换行强制断行+CJK/ASCII显示宽度估算换行数+行距余量1.45;根治实测长文本(含换行项目符号列表)在行底被截断;总高超页截行加提示不跨页拆表 2026-09-11 17:18:58 +08:00
47f191fc81 feat(ppt): 研发报告PPT重做设计系统——深海军蓝主色+亮蓝强调统一配色;封面深色满版+强调短线+方向标签;四节章节分隔页(带节序号);内容页强调竖条标题+多级要点缩进+粗体引导词着色;markdown表格真渲染pptx Table(表头深蓝白字隔行浅底自适应列宽);页脚页码+署名;长内容自动分页;目视验证13页2表格排版专业 2026-09-11 15:09:04 +08:00
8c5bf498c8 fix(opp): 统计聚合优先+明细limit硬上限——_clamp_detail_limit(50上限,默认20/10);category_references/demands/overseas_references默认limit 500/50→20/10;工具描述改『统计首选hot_*/明细只取样例limit≤10』;OPP_PROMPT硬规则补统计聚合优先+平均价=total_budget/count公式;根治prompt原指引『给排名统计调category_references取分项明细』诱导agent拉300条全量明细撑爆上下文 2026-09-11 13:46:28 +08:00
2f71d851ef fix(opp): LIKE 模式参数化——SQL字面量裸%被驱动当格式化符炸ValueError(实测500), agent.% 改走 ${agent_pat}$ 传值 2026-09-09 15:18:50 +08:00
8627b855c0 feat(opp): 研发报告菜单改造——owner过滤列表+四节详情+成果文件下载
用户需求(2026-09-09):研发报告按钮点击按项目owner过滤列表;每项点击看
研发场景/输入/输出/成果;成果文件多个列出、逐个点击下载。

1. 列表页 api/opp_reports_list.dspy(替换CRUD裸表页作菜单入口):
   - list_visible_reports 单一事实源:挂项目的报告仅项目owner可见
     (sd_projects.created_by==uid;agent建的项目降级同机构,对齐
     check_project_owner既有语义);未挂项目的平台级调研登录可见;
     孤儿报告(项目已删)不可见(LIKE 'agent.%' 写法有 rag_client.py 生产先例)
   - 整行点击下钻详情,交互范式照抄 opp_references_items.dspy
2. 详情弹窗 api/opp_report_detail.dspy:
   - parse_report_sections 四节解析(## 研发场景/输入/输出/成果),
     MdWidget逐节渲染;兼容序号/冒号/加粗标题变体;三级标题不误判;
     旧报告无节时全文归输出节;空节如实标注不编造
   - check_report_visible 与列表同一可见性规则(语义不漂移)
3. 文件下载 api/opp_report_file_dl.dspy + list_report_files:
   - 范围=项目deliverables/全部文件+报告PPT(realpath去重)
   - 安全模型对齐 opp_attachment_dl:前端只传report_id+name,
     服务端回查清单命中才给文件,文件名不参与路径拼接(防穿越)
4. agent侧四节模板硬要求:OPP_PROMPT新增节+create/update_report工具描述
5. RBAC load_path 补3端点;i18n zh/en 补9词条;README 补改造说明

离线实测11项断言全过:标准四节/标题变体/旧报告归输出/缺节/三级标题不误判/
重复节拼接/空正文/deliverables扫描+PPT去重/项目外PPT/无项目不崩/防穿越
2026-09-09 15:04:20 +08:00
a066cb0f91 feat(opp): item detail full-text rendered by MdWidget (markdown, clickable links) - crawler now stores markdown detail_text 2026-09-09 11:24:27 +08:00
f44e5f7f83 fix(opp): 附件按平台副本状态诚实渲染——已存副本才给下载按钮,未存(如需登录)给打开原始页,不伪装可下载 2026-09-08 23:57:56 +08:00
45cec8987e feat(opp): 数据参考三级整行下钻+明细详情弹窗+附件下载代理
- 汇总主题/分项条目整行点击(cursor:pointer)弹下级弹窗,撤「查看分项」按钮
- 明细每条来源写进说明文字(source_text),删除 source_button_widget 来源按钮
- 新 opp_item_detail.dspy: 爬虫平台条目全量字段+公告全文+附件列表
- 新 opp_attachment_dl.dspy: 服务端附件下载代理,归属校验防SSRF,
  降级链 download_url→/api/attachments/{id}/download→原始url,失败如实报错
- opp_data_capability: tender_attachments/normalize_attachment 容错对接
  爬虫平台附件子系统(/api/tenders/{id}/attachments,另一会话开发中,未就绪时降级提示)
- opp_common: crawler_get_raw 原始字节下载辅助; load_path 注册两个新端点
- README/prompt 同步新交互描述
2026-09-08 23:39:16 +08:00
1040eb0bd9 fix(opp): infer source name from source_url domain - crawler records carry no source code, only source_url; registry domain suffix match (search.ccgp.gov.cn -> ccgp) 2026-09-08 18:59:52 +08:00
8c032d7be0 feat(opp): detail popups show source as name button jumping to source url - SOURCE_REGISTRY in opp_common aligned with crawler sites.yaml (source_url preferred, homepage fallback) 2026-09-08 18:56:14 +08:00
d607d8d940 fix: model_dataurl补pipeline_id(产线隔离) 2026-09-02 19:05:35 +08:00
c508e2ba8a fix(session): 默认tab session_id按产线分离(default_opportunity_general) 2026-08-31 22:03:56 +08:00
0d094e6f54 chore: load_path pyc regen (tracked artifact) 2026-08-31 11:36:15 +08:00
333aad0127 feat: 数据项列表全面带来源URL——国内众包需求主题接入数据参考弹窗(新opp_demand_items.dspy,逐条带需求详情/来源页)+category_references支持record_type+prompt强制数据项列表逐条挂来源链接 2026-08-31 11:34:38 +08:00
ca8e9f2c71 海外软件需求接入商机产线: opp_hot_overseas/opp_overseas_references工具+数据参考弹窗海外板块+opp_demands补海外源 2026-08-30 19:54:00 +08:00
a53b81ffe6 feat: 接入众包平台需求数据——opp_demands/opp_hot_demands工具(猪八戒/一品威客甲方需求) 2026-08-30 13:50:18 +08:00
d777f0ac33 feat(opp): 口述条件检索/汇总——opp_query_tenders+先调研后报告流程
- 新增 opp_query_tenders: 用户口述条件(关键词/地区/采购人/公告类型/来源/
  预算区间/AI评分/时间窗)→LLM映射参数,返回明细或按维度汇总(条数/预算/样例)
- 数据层 query_tenders 透传爬虫平台 /api/tenders_query
- prompt 改四步流程: 收集资料→数据分析→发现商机→产研报告(不直接写报告)
2026-08-30 08:51:55 +08:00
b2c87edf74 fix: submit_for_confirmation按confirm_task_id绑定幂等——禁止复用其他报告的确认任务(绑定丢失导致报告无法确认) 2026-08-29 15:11:32 +08:00
f192128f5e feat: references可查证界面+报告确认门禁全文展示+PPT存储下载+数据参考菜单 2026-08-29 13:08:16 +08:00
2c8d723142 fix: crawler_get局部import urllib.request遮蔽模块级urllib→所有查询类opp工具UnboundLocalError 2026-08-29 09:25:57 +08:00
5d8978b78d fix: resolve_approval漏查project_id列→人工审批任务永远pending(阻塞任务泄漏) 2026-08-29 08:38:29 +08:00
6f0aaee727 feat: 商机产线agent会话入口页(参照投标产线) 2026-08-29 08:28:26 +08:00
025368d66b feat: 审批改走钉钉审批(dingdingflow)——发起时推钉钉+回调钩子写回,无配置降级人工; 补.gitignore 2026-08-28 22:31:53 +08:00
4b530212e6 fix(i18n): 补列标题翻译键——审批页英文视图列头中英混杂(主键ID/报告ID/审批状态/结论时间等未翻译) 2026-08-28 21:20:02 +08:00
5a41e74c83 fix: opp_approvals data_filter单条件AND被sqlor拒绝(需>=2条件)——补report_id条件; 重新生成CRUD页 2026-08-28 21:17:26 +08:00
dc71c92d34 fix(log): 加载日志改debug级——宿主日志过滤info,各模块加载日志均debug才可观测 2026-08-28 17:55:50 +08:00
fdbae0e05a fix(i18n): msg.txt改key=value格式(merge解析器只认=,冒号格式从未被合并) 2026-08-28 17:44:55 +08:00
dd6d616744 docs: 测试用例方案——27用例覆盖22功能点(冒烟5/数据7/闭环8/UI5/RBAC2),test agent经run_shell+playwright执行浏览器用例 2026-08-28 17:28:02 +08:00
819a1d6dac docs: 补齐模块规范三件套——README(人看)/skill/SKILL.md(agent看)/i18n中英双语;修正pipeline_human_tasks真实表结构插入 2026-08-28 17:18:46 +08:00
5a1b7694e8 Merge remote-tracking branch 'origin/main' 2026-08-28 17:04:37 +08:00
6aabfaac07 Initial commit 2026-08-28 17:04:01 +08:00
b5cf9599f4 feat: 商机产线能力包——招标数据(爬取平台内网HTTP)→热点推荐→研发报告→人工确认→研发审批 2026-08-28 17:00:58 +08:00