Files
agent-park/.sisyphus/sql/tag-semantic-prune-final-2026-02-21.sql
T

77 lines
1.9 KiB
PL/PgSQL

BEGIN;
WITH noise AS (
SELECT id
FROM tags
WHERE name IN (
'开源',
'学术资源',
'复杂部署',
'用户通知',
'需要配置'
)
),
projects_without_meaningful_tags AS (
SELECT p.id, p.name
FROM projects p
LEFT JOIN project_tags pt ON pt."projectId" = p.id
LEFT JOIN noise n ON n.id = pt."tagId"
GROUP BY p.id, p.name
HAVING COUNT(pt."tagId") > 0 AND COUNT(pt."tagId") = COUNT(n.id)
),
fallback_tags AS (
SELECT
(SELECT id FROM tags WHERE name = 'AI研究' LIMIT 1) AS research_id,
(SELECT id FROM tags WHERE name = 'AI 助手' LIMIT 1) AS assistant_id,
(SELECT id FROM tags WHERE name = 'AI代理' LIMIT 1) AS agent_id,
(SELECT id FROM tags WHERE name = '自动化' LIMIT 1) AS automation_id,
(SELECT id FROM tags WHERE name = 'AI开发工具' LIMIT 1) AS tool_id
),
assignments AS (
SELECT
p.id AS project_id,
CASE
WHEN p.name ~* '(论文|研究|paper|survey)' THEN (SELECT research_id FROM fallback_tags)
WHEN p.name ~* '(助手|assistant)' THEN (SELECT assistant_id FROM fallback_tags)
WHEN p.name ~* '(框架|agent|代理|智能体)' THEN (SELECT agent_id FROM fallback_tags)
WHEN p.name ~* '(通知|alert|quota|配额)' THEN (SELECT automation_id FROM fallback_tags)
ELSE (SELECT tool_id FROM fallback_tags)
END AS tag_id
FROM projects_without_meaningful_tags p
)
INSERT INTO project_tags ("projectId", "tagId")
SELECT project_id, tag_id
FROM assignments
WHERE tag_id IS NOT NULL
ON CONFLICT ("projectId", "tagId") DO NOTHING;
WITH noise AS (
SELECT id
FROM tags
WHERE name IN (
'开源',
'学术资源',
'复杂部署',
'用户通知',
'需要配置'
)
)
DELETE FROM project_tags
WHERE "tagId" IN (SELECT id FROM noise);
WITH noise AS (
SELECT id
FROM tags
WHERE name IN (
'开源',
'学术资源',
'复杂部署',
'用户通知',
'需要配置'
)
)
DELETE FROM tags
WHERE id IN (SELECT id FROM noise);
COMMIT;