Sisyphus
|
855d4c3f00
|
feat(xkgroup): 采集器切换到新站 120.70.100.128:8096
- 新站为 layui 服务端渲染(无 JSON API), 抓取层重写为 HTML 列表页解析
(GET /front/notice/cgxx?category=bid|procure|auction 分页, pageNo 从 0 起)
- 旧站 kdcloud getPortalNoticeData API 已失效(302 到登录页)
- 类型标签映射: 默认抓商机类(招标/采购/竞价公告)+流标类(废标/竞价流拍),
--all-types 额外抓结果/变更/其他类, 对应旧版 C+D / +B 语义
- 白名单过滤改为标题+发布单位联合匹配(新站发布单位多为代理机构,
按单位匹配会漏掉白名单组织自己的公告)
- 详情增强改用 requests(新站纯 SSR 无需 Playwright): 存 HTML 源码 +
提取金额/截止/地区 + 下载附件 PDF 直链
- 输出状态文件格式不变, CrawlerService 入库链路零改动(本地+生产端到端验证通过)
- 新增 --max-pages 参数(默认每板块 5 页)
|
2026-10-13 10:20:09 +08:00 |
|
Sisyphus
|
5a49a37235
|
docs: 项目交接文档 + 比价功能PRD + 数据维护脚本
- HANDOVER.md: 完整交接文档(架构/数据模型/API/业务流/已知坑/工作区状态/待办)
- PRD-智能比价助手.md: 比价功能产品需求文档(供外部平台参考)
- 数据维护脚本: 清理AI垃圾品类SQL、修复损坏标题SQL、线索重分类/重抓脚本
|
2026-09-30 09:35:05 +08:00 |
|
Sisyphus
|
eb15849168
|
feat: 询价标题AI压缩 + 采集器品类化 + 询价搜索与品类多选框
- TitleCompressorService: 发布前超长标题(>50字)调 MiniMax 压缩(保留公司名+物料+采购类型), JSON结构化输出对抗推理模型思考噪音, 失败硬截断兜底
- publishToDirev 集成标题压缩, 保留原50字预校验作为防御
- crawler resolveKeywords: 采集器配置优先按关联品类展开关键词库, 中电建每关键词独立状态文件
- InquiryPage: 新增关键词搜索(fSearch → GET /api/leads?search=)
- RuleCenterPage: 采集器配置由 keywords 改为品类多选框(categories JSON数组)
|
2026-09-30 09:34:58 +08:00 |
|
Sisyphus
|
fd8b197853
|
feat(xkgroup): 加 3 个新过滤规则 (类型+多次询价标题+组织白名单)
【新规则】
1. DEFAULT_TYPES 增加 D (流标公告), 现在抓寻源(C) + 流标(D)
2. RETRY_PATTERN: 标题含 二次/三次/四次/.../九次
3. ORG_WHITELIST: 新疆宝地矿业股份有限公司 + 新疆火烧云铅锌矿有限责任公司
【触发时机】
这三个条件作为附加过滤层, 在原有 --keyword (DB CrawlerConfig.keywords) 之后生效
【验证(生产)】
累计 168 条历史状态命中:
- 单 RETRY: 49 条
- 单 ORG: 10 条
- RETRY + ORG: 3 条 (火烧云绿色矿山, 宝地审计二次/三次)
⚠️ 注意: 加上 DB 关键词 (电缆/钢材/阀门/管材/设备/机械/矿业) 后只剩 2 条命中
关键词是为电力工程领域配的, 新规则聚焦宝地/火烧云的多次询价,
两者交集很小. 建议清掉新矿 DB 的 keywords 让新规则单独生效.
|
2026-07-22 15:13:00 +08:00 |
|
Sisyphus
|
fc4a4e81d4
|
fix(中电建): 跨天首次运行回溯 3 天, 补抓前一天后半天发布的公告
bug 复现: state 文件按日期存放, 跨天首次运行 sinceDate=今天,
漏掉前一天 8:00 CST 之后才发布的公告 (用户实例: 2409490555 中电建水电十四局橡胶电缆, 7/21 22:45 发布).
修复: 新增 BACKFILL_DAYS=3 配置, state 为空时 sinceDate = today - 3 天,
新增'跨天补抓'日志分支.
验证: 删 state 后重跑拉到 80 条 / 28 条招采公告, 全部下载成功.
本地 + 生产 scp 同步部署, 4 个关键词全流程测试通过.
|
2026-07-22 11:41:49 +08:00 |
|
Sisyphus
|
1a92a3c095
|
fix(categories): 硬化 AI 分类输出过滤,防止下拉框再次被 AI 推理文本污染
【问题】
AdminPage / InquiryPage 品类下拉框显示 414 条 AI 推理文本 (例: '**合金铝线采购** - 这是**电线电缆**的一种'),
源头: CategoryInferenceService 把 MiniMax (M2.7) 响应的整段 markdown/think 文本写到了 ProductCategory.name。
【根因】
原代码对 MiniMax 返回值没有任何后处理,直接信任模型输出。
-prompt 只说'只输出品类名', M2.7 推理模型仍会输出 think 标签 + 解释 + **加粗**;
-isValidCategoryName 黑名单里错误地把钢材/管材等 15 核心也当作 noise,导致合法品类被丢弃回退。
【修复】
1. src/product-category/category-inference.service.ts:
- 新增 isValidCategoryName + sanitizeOne 后处理链,强制规则:
* 长度 1-6 字符
* 只允许纯中文 (无 ** / → / - / 中文标点 / 连续英文字母)
* 排除项目词 (采购/项目/公司/工程/设备/材料/招标 等)
* 排除推理噪声前缀 (让我分析/根据/考虑 等)
- SYSTEM_RULES 系统提示明确禁止思考/解释/Markdown/标点/项目词/英文
- 单条调用 max_tokens: 50 → 60 (留余量防截断)
2. scripts/restore_categories.js: 恢复 27 品类(15核心+12扩展),upsert 幂等,关键词来自 scripts/expand_keywords.js
3. scripts/sanitize_smoke.js: 11 case 回归测试,验证 sanitizeOne 拒绝所有已知污染样本
【生产验证】
/api/categories 返回 53 个品类,最长 6 字符,无 ** / → / - 。PM2 已重启加载新版。
|
2026-07-01 12:12:19 +08:00 |
|
Sisyphus
|
4896453dfb
|
feat: 扩展关键词完成 68 条空品类线索分类 (100% 覆盖率)
- scripts/expand_keywords.js: 扩展 15 品类关键词至 27 个,匹配 58 条
- scripts/assign_remaining.js: 10 条剩余线索合理分配 (消毒剂→涂料, 重水→仪表, 光伏支架→钢材等)
- scripts/CATEGORY_CLEANUP.md: AdminPage 品类清理建议 (保留核心 15 + 7 个扩展, 合并/删除 24 个 AI 新建细分类)
最终状态: 761 条线索 100% 已分配品类, 42 个品类 (15 主类目 + 27 扩展/AI 新建)
|
2026-07-01 11:51:38 +08:00 |
|
Sisyphus
|
ab764bbc6c
|
refactor: DeepSeek → MiniMax (M2.7 推理模型) 迁移
- notes-extractor 和 category-inference 都改用 MiniMax API
- endpoint: https://api.minimaxi.com/v1/chat/completions
- model: MiniMax-M2.7 (env 可覆盖 MINIMAX_MODEL)
- 提示词明确禁止 <think> 标签和解释文字
- 新增 scripts/backfill_category.js (单条请求 + 严格清洗)
- 新增 scripts/clean_category.js (清理 <think>/**加粗/解释行/破折号 等脏值)
- 生产 .env 已写入 MINIMAX_API_KEY
- 实际回填: 693/761 (91%) 已分配品类, 68 条空品类待后续处理
|
2026-07-01 11:31:17 +08:00 |
|
Sisyphus
|
209f2e3d05
|
chore: 添加一键部署脚本 scripts/deploy.sh
自动构建 + rsync 编译产物和源码 + pm2 restart
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-06-26 16:55:40 +08:00 |
|
Sisyphus
|
bd213eb5ec
|
feat: 采集器地址提取优化 - 省份关键词匹配、标题兜底、跨天去重
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
2026-06-26 16:24:32 +08:00 |
|
Sisyphus
|
afac18e843
|
feat(F002): W26 + W29.x + W30 + W31 平台助手全部改动首次 commit
- W26: NestJS API + Next.js Web + Prisma + SQLite scaffold
- W26: Lead 模型 + Crawler + 询价发布助手 (线索池 + 一键发布)
- W29.x: MCP 集成 (Integration 模型 + connectMcp + publish_rfq 5 工具端到端跑通)
- W30: 3 字段补充 (notes / quotationType / quotationDemand)
- W31 P1: 自动填 enterpriseId / userId (Prisma companyUserId 字段 + get_app_identity tool + lead.service.ts publishArgs)
- W31: detail 详情页 + admin UI 集成管理 (OpenAppListView + AuditLogListView)
关联: ~/Documents/02-平台开发/产品开发/F002-W31-交接文档.md
GIT-AUDIT-REPORT-2026-06-24.md
|
2026-06-24 11:07:11 +08:00 |
|