# iNews **Repository Path**: itoolx/i-news ## Basic Information - **Project Name**: iNews - **Description**: 这是一个不需要介绍的页面 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-18 - **Last Updated**: 2026-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 内容抓取与分析系统 ## 项目概述 本项目是一个内容抓取与分析系统,主要用于从各种网络源抓取内容,并对抓取的内容进行结构化分析和管理。系统提供源管理、内容管理、分析管理等功能,支持对抓取的内容进行关键词、观点和事件的分析,并生成相应的统计数据。 ## 完整文件结构 ``` 项目根目录/ ├─ dbs/ │ └─ main.db # 业务数据库 ├─ events/ │ ├─ analysis_crawl_content.event # 分析抓取内容事件 │ └─ filter_crawl_content.event # 过滤抓取内容事件 ├─ flows/ │ └─ crawl.flow # 抓取流程 ├─ modules/ │ ├─ analysisManager.js # 分析管理模块 │ ├─ contentManager.js # 内容管理模块 │ ├─ contentPoolManager.js # 内容池管理模块 │ ├─ promptTemplateManager.js # 提示词模板管理模块 │ └─ sourceManager.js # 源管理模块 ├─ pages/ │ ├─ app.css # 客户端公共样式文件 │ ├─ clientState.js # 客户端状态持久化专用脚本 │ ├─ business/ │ │ ├─ analysisList.html # 分析列表页面 │ │ ├─ contentManagement.html # 内容管理页面 │ │ ├─ contentPoolManagement.html # 内容池管理页面 │ │ ├─ home.html # 首页 │ │ ├─ promptTemplateManagement.html # 提示词模板管理页面 │ │ ├─ sourceDetail.html # 源详情页面 │ │ └─ sources.html # 源列表页面 │ └─ home.html # 首页 ├─ plans/ │ └─ do_crawl.plan # 抓取计划 ├─ utils/ │ └─ format.js # 工具函数 ├─ PROJECT.prd # 产品需求文档 └─ README.md # 项目说明文档 ``` ## 数据驱动原则 本系统严格遵循数据驱动原则,页面上所有的数据都来自数据库并提供后台接口,确保所有数据可管理和统计。系统通过模块化的后端接口提供数据服务,前端页面通过调用这些接口获取和展示数据,实现前后端分离的架构设计。 ## 路由信息表 | 页面用途 | 对应文件路径 | 访问路由 | 页面参数 | 功能描述 | |---------|-------------|----------|----------|----------| | 首页 | pages/business/home.html | pages/business/home.html | - | 展示系统概览、导航菜单和统计信息 | | 源列表 | pages/business/sources.html | pages/business/sources.html | - | 展示所有抓取源列表,包含每个源抓取的文章数量统计 | | 源详情 | pages/business/sourceDetail.html | pages/business/sourceDetail.html | id 源ID | 展示源详情信息,包含增强抓取标记设置 | | 内容管理 | pages/business/contentManagement.html | pages/business/contentManagement.html | - | 管理抓取的内容,支持筛选、查看和删除 | | 内容池管理 | pages/business/contentPoolManagement.html | pages/business/contentPoolManagement.html | - | 管理内容池,支持审核和发布 | | 分析列表 | pages/business/analysisList.html | pages/business/analysisList.html | - | 展示分析结果列表,包含关键词、观点和事件分析 | | 提示词模板管理 | pages/business/promptTemplateManagement.html | pages/business/promptTemplateManagement.html | - | 管理提示词模板,支持添加、编辑和删除 | ## 模块函数说明 ### modules/analysisManager.js - getAnalysisList(contentId, type, page, pageSize, searchKeyword) - 功能:获取分析结构分页列表 - 参数:contentId(可选,内容ID筛选)、type(可选,分析类型筛选)、page(默认1,页码)、pageSize(默认10,每页数量)、searchKeyword(可选,搜索关键词) - 返回:{code, message, data:{list, total, page, pageSize}} - addAnalysis(contentId, type, data) - 功能:添加分析结构 - 参数:contentId(内容ID)、type(分析类型)、data(分析数据) - 返回:{code, message, data:{id}} - updateAnalysis(id, type, data) - 功能:更新分析结构 - 参数:id(分析结构ID)、type(分析类型)、data(分析数据) - 返回:{code, message, data:null} - deleteAnalysis(id) - 功能:删除分析结构 - 参数:id(分析结构ID) - 返回:{code, message, data:null} - getAnalysisStats(contentId, sourceId, startDate, endDate) - 功能:获取分析统计数据 - 参数:contentId(可选,内容ID筛选)、sourceId(可选,抓取源ID筛选)、startDate(可选,开始日期)、endDate(可选,结束日期) - 返回:{code, message, data:{stats}} ### modules/contentManager.js - getContentList(sourceId, keyword, analysisStatus, page, pageSize) - 功能:获取抓取内容分页列表 - 参数:sourceId(可选,抓取源ID筛选)、keyword(可选,关键词筛选)、analysisStatus(可选,分析状态筛选)、page(默认1,页码)、pageSize(默认10,每页数量) - 返回:{code, message, data:{list, total, page, pageSize}} - getContentDetail(id) - 功能:获取内容详情 - 参数:id(内容ID) - 返回:{code, message, data:{内容详情}} - deleteContent(id) - 功能:删除内容 - 参数:id(内容ID) - 返回:{code, message, data:null} - batchDeleteContent(ids) - 功能:批量删除内容 - 参数:ids(内容ID数组) - 返回:{code, message, data:null} ### modules/contentPoolManager.js - getContentPoolList(sourceId, format, page, pageSize) - 功能:获取内容池分页列表 - 参数:sourceId(可选,抓取源ID筛选)、format(可选,格式筛选)、page(默认1,页码)、pageSize(默认10,每页数量) - 返回:{code, message, data:{list, total, page, pageSize}} - getContentPoolDetail(id) - 功能:获取内容池详情 - 参数:id(内容池ID) - 返回:{code, message, data:{内容池详情}} - addContentPool(sourceId, contentId, templateId, format, data) - 功能:添加内容池项 - 参数:sourceId(抓取源ID)、contentId(内容ID)、templateId(模板ID)、format(格式)、data(内容数据) - 返回:{code, message, data:{id}} - updateContentPool(id, format, data) - 功能:更新内容池项 - 参数:id(内容池ID)、format(格式)、data(内容数据) - 返回:{code, message, data:null} - deleteContentPool(id) - 功能:删除内容池项 - 参数:id(内容池ID) - 返回:{code, message, data:null} - generateMultiModalContent(templateId, analysisData, format) - 功能:生成多模态内容 - 参数:templateId(模板ID)、analysisData(分析数据)、format(内容格式) - 返回:{code, message, data:{contentId, format, data}} - approveContent(id) - 功能:审核通过内容 - 参数:id(内容池ID) - 返回:{code, message, data:null} - rejectContent(id, reason) - 功能:审核拒绝内容 - 参数:id(内容池ID)、reason(拒绝原因) - 返回:{code, message, data:null} ### modules/promptTemplateManager.js - getTemplateList(keyword, page, pageSize) - 功能:获取提示词模板分页列表 - 参数:keyword(可选,搜索关键词)、page(默认1,页码)、pageSize(默认10,每页数量) - 返回:{code, message, data:{list, total, page, pageSize}} - addTemplate(name, content, description) - 功能:添加提示词模板 - 参数:name(模板名称)、content(模板内容)、description(可选,模板描述) - 返回:{code, message, data:{id}} - updateTemplate(id, name, content, description) - 功能:更新提示词模板 - 参数:id(模板ID)、name(模板名称)、content(模板内容)、description(模板描述) - 返回:{code, message, data:null} - deleteTemplate(id) - 功能:删除提示词模板 - 参数:id(模板ID) - 返回:{code, message, data:null} - getTemplateDetail(id) - 功能:获取提示词模板详情 - 参数:id(模板ID) - 返回:{code, message, data:{模板详情}} - generateArticle(templateId, analysisData) - 功能:使用模板和分析数据生成文?? - 参数:templateId(模板ID)、analysisData(分析数据) - 返回:{code, message, data:{articleId, template, analysisData}} ### modules/sourceManager.js - getSourceList(siteTitle, isEnable, page, pageSize) - 功能:获取抓取源列表 - 参数:siteTitle(可选,站点标题筛选)、isEnable(可选,是否启用筛选)、page(默认1,页码)、pageSize(默认10,每页数量) - 返回:{code, message, data:{list, total, page, pageSize}} - addSource(siteUrl, siteTitle, isEnable) - 功能:添加抓取源 - 参数:siteUrl(站点URL)、siteTitle(站点标题)、isEnable(默认true,是否启用) - 返回:{code, message, data:{id}} - updateSource(id, siteUrl, siteTitle, isEnable) - 功能:更新抓取源 - 参数:id(抓取源ID)、siteUrl(站点URL)、siteTitle(站点标题)、isEnable(是否启用) - 返回:{code, message, data:null} - deleteSource(id) - 功能:删除抓取源 - 参数:id(抓取源ID) - 返回:{code, message, data:null} - getSourceDetail(id) - 功能:获取抓取源详情 - 参数:id(抓取源ID) - 返回:{code, message, data:{源详情}} - toggleSourceStatus(id, enable) - 功能:启用/禁用抓取源 - 参数:id(抓取源ID)、enable(是否启用) - 返回:{code, message, data:null} - getSourceComments(sourceId) - 功能:获取抓取源注释列表 - 参数:sourceId(抓取源ID) - 返回:{code, message, data:{list}} - addSourceComment(sourceId, content, userId) - 功能:添加抓取源注释 - 参数:sourceId(抓取源ID)、content(注释内容)、userId(可选,用户ID) - 返回:{code, message, data:{id}} - updateSourceComment(commentId, content) - 功能:更新抓取源注释 - 参数:commentId(注释ID)、content(注释内容) - 返回:{code, message, data:null} - deleteSourceComment(commentId) - 功能:删除抓取源注释 - 参数:commentId(注释ID) - 返回:{code, message, data:null} ## 页面设计规范 ### 颜色主题规范 | 颜色类型 | 色值(HEX) | 用途说明 | 示例场景 | |---------|------------|----------|----------| | 主色调 | #165DFF | 品牌核心色,用于主要按钮、导航选中态 | 导航菜单选中项、主入口按钮 | | 辅助色 | #FF7D00 | 强调色,用于重要操作、提示 | 快捷功能图标、警告提示文本 | | 中性色 - 背景 | #F5F7FA | 页面主背景色,区分内容区域 | 主体内容区背景、模块间隔区域 | | 中性色 - 卡片 | #FFFFFF | 模块卡片背景,增强层次感 | 项目入口卡片、功能按钮背景 | | 文本色 - 主 | #333333 | 主要文本,确保可读性 | 标题、模块名称 | | 文本色 - 次 | #666666 | 次要文本,辅助说明 | 项目简介、功能标签 | | 文本色 - 弱 | #999999 | 弱化文本,如辅助信息 | 版权信息、链接说明 | ### 页面通用布局规范 采用「响应式分层布局」,确保在 PC / 平板 / 手机端均有一致体验,核心结构包括固定头部(Header)、主体内容区(Main)、固定底部(Footer),其中固定头部占比页面高度 8%-10%,包含导航、品牌标识;主体内容区占比页面高度 75%-85%,根据页面功能动态适配,采用「上下分段」或「左右分栏」结构;固定底部占比页面高度 5%-7%,包含版权、链接等。 ### 首页(pages/business/home.html)具体模块划分 | 模块名称 | 位置 | 功能描述 | 包含元素 | |---------|------|----------|----------| | 顶部导航模块 | 页面最上方 | 全局导航,区分系统功能模块 | Logo、主导航菜单(下拉)、搜索框 | | 统计概览模块 | 导航下方 | 展示系统核心统计数据 | 抓取源数量、内容数量、分析完成率等统计卡片 | | 功能入口模块 | 统计概览下方 | 展示???功能模块入口 | 功能卡片(图标 + 名称 + 简介) | | 最新动态模块 | 功能入口下方 | 展示最新抓取和分析动态 | 动态列表,包含时间、事件描述 | | 页脚模块 | 页面最下方 | 补充信息,确保合规性 | 版权信息、联系方式、隐私政策链接 | ### 源列表页面(pages/business/sources.html)特殊设计 源列表页面需要展示每个源抓取的文章数量统计,并在源管理中添加增强抓取标记(flag)功能。页面设计包含以下特殊元素: - 源列表表格中增加"文章数量"列,显示每个源抓取的文章总数 - 源操作区域增加"增强抓取"开关,用于标记是否需要对该源进行增强抓取 - 源状态显示区域增加增强抓取状态的视觉标识 ### 颜色使用规则 主色调(#165DFF)使用面积不超过页面 30%,避免视觉过载;辅助色(#FF7D00)仅用于强调,单个页面不超过 3 处重点使用;文本与背景对比度需≥4.5:1(符合 WCAG 2.1 AA 标准);模块边框统一使用 #E5E6EB(浅灰),确保边界清晰但不突兀。 ### 其他页面通用规则 所有页面必须包含「顶部导航模块」和「页脚模块」,保持导航一致性;相同功能(如搜索、筛选)复用首页的样式;严格遵循全局色板,禁止新增未定义色值。