77 lines
1.9 KiB
PL/PgSQL
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;
|