Files
akmon/init_business_items.sql
2026-01-20 08:04:15 +08:00

261 lines
9.5 KiB
PL/PgSQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ===================================================================
-- 业务项目内容初始化脚本
-- 基于 ak_contents 表,使用 content_type='business_item' 来区分业务项目
-- ===================================================================
-- 首先确保 ak_contents 表中有 content_type 字段
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'ak_contents'
AND column_name = 'content_type'
) THEN
ALTER TABLE public.ak_contents
ADD COLUMN content_type VARCHAR(50) DEFAULT 'article';
-- 创建索引以提高查询性能
CREATE INDEX idx_ak_contents_content_type ON public.ak_contents(content_type);
RAISE NOTICE '已为 ak_contents 表添加 content_type 字段';
ELSE
RAISE NOTICE 'content_type 字段已存在';
END IF;
END
$$;
-- 确保有业务相关的分类
INSERT INTO public.ak_content_categories (name_key, parent_id, level, ai_keywords, sort_order, is_active) VALUES
('business.ai', NULL, 0, ARRAY['人工智能', 'AI', '机器学习', 'artificial intelligence'], 1, true),
('business.bigdata', NULL, 0, ARRAY['大数据', 'big data', '数据分析', 'analytics'], 2, true),
('business.iot', NULL, 0, ARRAY['物联网', 'IoT', '智能设备', 'smart devices'], 3, true),
('business.cloud', NULL, 0, ARRAY['云计算', 'cloud computing', '云服务', 'cloud services'], 4, true),
('business.blockchain', NULL, 0, ARRAY['区块链', 'blockchain', '数字货币', 'cryptocurrency'], 5, true),
('business.mobile', NULL, 0, ARRAY['移动开发', 'mobile development', 'APP开发', 'mobile app'], 6, true),
('business.web', NULL, 0, ARRAY['前端开发', 'web development', '网站建设', 'website'], 7, true),
('business.database', NULL, 0, ARRAY['数据库', 'database', 'SQL', '数据管理'], 8, true)
ON CONFLICT (name_key) DO NOTHING;
-- 获取分类ID以便插入内容
DO $$
DECLARE
ai_category_id UUID;
bigdata_category_id UUID;
iot_category_id UUID;
cloud_category_id UUID;
blockchain_category_id UUID;
mobile_category_id UUID;
web_category_id UUID;
database_category_id UUID;
BEGIN
-- 获取分类ID
SELECT id INTO ai_category_id FROM public.ak_content_categories WHERE name_key = 'business.ai';
SELECT id INTO bigdata_category_id FROM public.ak_content_categories WHERE name_key = 'business.bigdata';
SELECT id INTO iot_category_id FROM public.ak_content_categories WHERE name_key = 'business.iot';
SELECT id INTO cloud_category_id FROM public.ak_content_categories WHERE name_key = 'business.cloud';
SELECT id INTO blockchain_category_id FROM public.ak_content_categories WHERE name_key = 'business.blockchain';
SELECT id INTO mobile_category_id FROM public.ak_content_categories WHERE name_key = 'business.mobile';
SELECT id INTO web_category_id FROM public.ak_content_categories WHERE name_key = 'business.web';
SELECT id INTO database_category_id FROM public.ak_content_categories WHERE name_key = 'business.database';
-- 插入业务项目内容
INSERT INTO public.ak_contents (
title,
content_summary,
content_type,
category_id,
original_language,
status,
featured_image_url,
view_count,
published_at,
tags,
quality_score
) VALUES
(
'人工智能解决方案',
'为企业提供全方位的AI技术支持和解决方案助力数字化转型升级。我们的AI服务包括机器学习模型开发、自然语言处理、计算机视觉等核心技术。',
'business_item',
ai_category_id,
'zh-CN',
'published',
'https://picsum.photos/400/300?random=1',
1285,
NOW() - INTERVAL '5 days',
ARRAY['人工智能', 'AI', '机器学习', '企业服务'],
0.95
),
(
'大数据分析平台',
'专业的数据分析工具,帮助企业洞察商业价值,制定精准决策。支持实时数据处理、可视化报表、智能预测分析等功能。',
'business_item',
bigdata_category_id,
'zh-CN',
'published',
'https://picsum.photos/400/300?random=2',
892,
NOW() - INTERVAL '8 days',
ARRAY['大数据', '数据分析', '商业智能', 'BI'],
0.92
),
(
'物联网系统集成',
'完整的IoT解决方案实现设备互联和智能管理。提供硬件接入、数据采集、远程控制、智能分析等一站式服务。',
'business_item',
iot_category_id,
'zh-CN',
'published',
'https://picsum.photos/400/300?random=3',
756,
NOW() - INTERVAL '10 days',
ARRAY['物联网', 'IoT', '智能设备', '系统集成'],
0.89
),
(
'云计算服务',
'稳定可靠的云端基础设施为业务提供强大的技术支撑。包括云服务器、云存储、CDN加速、负载均衡等核心服务。',
'business_item',
cloud_category_id,
'zh-CN',
'published',
'https://picsum.photos/400/300?random=4',
643,
NOW() - INTERVAL '12 days',
ARRAY['云计算', '云服务', '基础设施', 'IaaS'],
0.91
),
(
'区块链技术',
'安全可信的区块链解决方案,保障数据安全与透明。提供智能合约开发、数字资产管理、去中心化应用等服务。',
'business_item',
blockchain_category_id,
'zh-CN',
'published',
'https://picsum.photos/400/300?random=5',
521,
NOW() - INTERVAL '15 days',
ARRAY['区块链', '智能合约', '数字资产', 'DApp'],
0.87
),
(
'移动应用开发',
'专业的移动端应用开发服务覆盖iOS和Android平台。提供原生开发、混合开发、跨平台开发等多种解决方案。',
'business_item',
mobile_category_id,
'zh-CN',
'published',
'https://picsum.photos/400/300?random=6',
467,
NOW() - INTERVAL '18 days',
ARRAY['移动开发', 'APP', 'iOS', 'Android'],
0.93
),
(
'Web前端设计',
'现代化的前端界面设计,提供优秀的用户体验。采用最新的前端技术栈,确保响应式设计和跨浏览器兼容性。',
'business_item',
web_category_id,
'zh-CN',
'published',
'https://picsum.photos/400/300?random=7',
389,
NOW() - INTERVAL '20 days',
ARRAY['前端开发', 'UI设计', '响应式', '用户体验'],
0.90
),
(
'数据库优化',
'高性能数据库设计与优化,提升系统运行效率。包括数据库架构设计、性能调优、数据迁移、备份恢复等专业服务。',
'business_item',
database_category_id,
'zh-CN',
'published',
'https://picsum.photos/400/300?random=8',
324,
NOW() - INTERVAL '22 days',
ARRAY['数据库', '性能优化', 'SQL', '数据架构'],
0.88
);
RAISE NOTICE '业务项目内容初始化完成!';
RAISE NOTICE '已插入 8 个业务项目到 ak_contents 表中';
RAISE NOTICE '内容类型设置为: business_item';
END
$$;
-- 创建业务项目专用视图,方便查询和管理
CREATE OR REPLACE VIEW public.vw_business_items AS
SELECT
c.id,
c.title,
c.content_summary as description,
c.featured_image_url as image_url,
cc.name_key as category_key,
c.published_at,
c.view_count,
c.status,
c.tags,
c.quality_score,
c.created_at,
c.updated_at
FROM public.ak_contents c
LEFT JOIN public.ak_content_categories cc ON c.category_id = cc.id
WHERE c.content_type = 'business_item'
ORDER BY c.published_at DESC;
COMMENT ON VIEW public.vw_business_items IS '业务项目视图基于ak_contents表的business_item类型内容';
-- 创建获取业务项目的函数
CREATE OR REPLACE FUNCTION public.get_business_items(
p_limit INTEGER DEFAULT 20,
p_offset INTEGER DEFAULT 0,
p_language VARCHAR(10) DEFAULT 'zh-CN'
)
RETURNS TABLE (
id UUID,
title TEXT,
description TEXT,
image_url TEXT,
category_name TEXT,
publish_time TEXT,
view_count INTEGER,
tags TEXT[]
) AS $$
BEGIN
RETURN QUERY
SELECT
c.id,
c.title,
c.content_summary as description,
c.featured_image_url as image_url,
COALESCE(cc.name_key, '未分类') as category_name,
TO_CHAR(c.published_at, 'YYYY-MM-DD') as publish_time,
c.view_count,
c.tags
FROM public.ak_contents c
LEFT JOIN public.ak_content_categories cc ON c.category_id = cc.id
WHERE c.content_type = 'business_item'
AND c.status = 'published'
AND c.original_language = p_language
ORDER BY c.published_at DESC
LIMIT p_limit
OFFSET p_offset;
END;
$$ LANGUAGE plpgsql;
COMMENT ON FUNCTION public.get_business_items IS '获取业务项目列表的函数';
-- 输出完成信息
DO $$
BEGIN
RAISE NOTICE '=================================';
RAISE NOTICE '业务项目数据初始化完成!';
RAISE NOTICE '- 已创建业务相关分类';
RAISE NOTICE '- 已插入示例业务项目数据';
RAISE NOTICE '- 已创建业务项目视图';
RAISE NOTICE '- 已创建查询函数';
RAISE NOTICE '现在可以在 comindex.uvue 页面中使用 ak_contents 表获取业务项目了';
RAISE NOTICE '=================================';
END
$$;