Commit Graph

31 Commits

Author SHA1 Message Date
selfrelease 1524101652 security: 完成第三次全面安全审计 - Go升级 + 风险汇总更新
- 升级 govai 二进制:本地 Go 1.25.0 重新编译,覆盖服务器旧版(修复 Go 标准库 20 个漏洞)
- 更新 security-audit-report.md:P2 Go 漏洞标记已修复,重新组织风险汇总结构
2026-06-26 11:23:27 +08:00
selfrelease a3245b249a security: 安全审计修复 - API Key清理 + JWT改为HttpOnly Cookie
- API Key: run.md/.env/seed_model_providers.sql 中明文Key替换为占位符
- 认证: JWT从localStorage迁移到HttpOnly Cookie,移除后端body返回token
- 前端: api.ts/knowledge/page.tsx/auth.ts 全面改用Cookie认证
- postcss XSS: package.json添加overrides强制升级到8.5.15
- gitignore: 添加server/.env和.env排除规则
- lint: 移除tenant.go中未使用的roleKey常量
- 文档: 新增docs/security-audit-report.md和hardware-requirements.md
2026-06-26 10:44:04 +08:00
selfrelease c011f2eae8 refactor: 法治日报改为法治网 + 删除无用conversations/messages表
- 删除 conversations 和 messages 表(未被代码使用)
- 迁移文件:000017_drop_conversations_messages.up/down.sql
- 种子文件改名:seed_fazhiribao_* → seed_fazhiwang_*
- 组织数据:法治日报 → 法治网(slug: fazhiwang)
- 用户数据:法治日报管理员等 → 法治网管理员等
- 演示数据重构:使用 app_usage_logs 而非 conversations/messages
- 本地数据已更新:1个组织、15个应用、3个用户、5条示例对话
2026-06-25 21:57:38 +08:00
selfrelease c1cd6bc18d feat: 添加 conversations 和 messages 表用于存储应用示例对话数据
- 创建 conversations 表(对话记录)
- 创建 messages 表(对话消息)
- 添加必要的索引和外键约束
- 为 seed_fazhiribao_demo_data.sql 准备表结构
2026-06-25 21:38:48 +08:00
selfrelease da64551c92 feat: 法制→法治改名 + 15个应用示例数据
- 组织名称:法制日报→法治日报,法制网→法治网
- 更新所有种子文件中的法制→法治
- 新增 seed_fazhiribao_demo_data.sql
- 为15个应用创建真实示例对话数据
  * 对话型应用(5个):新闻摘要、案例解读、法规查询、舆情监测、写作润色
  * 补全型应用(4个):案件报道、宣传文案、采访提纲、评论撰写
  * 工作流应用(4个):选题策划、调查报告、专题框架、法律专题
  * 智能体应用(2个):选题助手、内容创作助手
- 每个应用包含1-3条完整示例对话,展示真实使用场景
2026-06-25 21:29:06 +08:00
selfrelease 756849f99e fix: 移除客户端对 NEXT_PUBLIC_API_URL 的依赖
- API_BASE 客户端使用空字符串(same-origin 通过 nginx)
- getStreamBase 服务端改用 API_URL
- getPPTDownloadURL 客户端使用 same-origin
- 彻底解决生产环境 CORS 错误
2026-06-25 21:18:21 +08:00
selfrelease 62dffb782a fix: 修复生产环境 CORS 错误 - SSR 使用 API_URL 而非 NEXT_PUBLIC_API_URL
- 将登录页 SSR 获取组织列表改为读取 API_URL 环境变量
- 避免 NEXT_PUBLIC_* 变量泄露到客户端导致跨域请求 localhost
- 客户端 api.ts 已使用空字符串(same-origin 通过 nginx 代理)
2026-06-25 21:14:05 +08:00
selfrelease 4a1ce220a6 fix: 移除登录页客户端兜底逻辑,避免水合时序导致的 Failed to fetch
移除 useEffect 中的客户端 fetch 兜底,完全依赖 SSR 注入机构数据。
避免水合时 initialOrgs 为空触发客户端请求,导致移动端出现 Failed to fetch 错误。
2026-06-25 21:07:59 +08:00
selfrelease 9d6498bf19 feat: 登录页改用 SSR 预取机构列表,消除首屏闪烁
**问题**
- 登录页机构下拉在客户端 useEffect 中拉取,首屏会闪现"正在加载机构列表"
- 浏览器端多一跳 fetch 请求,体感延迟明显

**改动**
- page.tsx → 服务端组件(async),SSR 时内网直连 /api/v1/organizations
- login-form.tsx → 客户端组件,接收 initialOrgs,保留表单交互
- useEffect 降级为仅当 SSR 为空时的客户端兜底
- force-dynamic + cache: no-store 保证机构变化即时生效

**验证**
- 本地 next start:首屏 HTML 直接含机构名,无占位符
- 构建路由从 ○ Static 变为 ƒ Dynamic
2026-06-25 20:58:18 +08:00
selfrelease 15beea041a chore: deploy.sh 默认 SERVER 改为 govai-root 通道
h2deploy 通道无 sudo 与 /opt/govai 写权限,直接 update 会失败;
改用具备写权限和 systemctl 权限的 root 通道作为默认。
2026-06-25 20:31:04 +08:00
selfrelease 1b7f6a5b6b deploy: 2026-06-25 20:23 更新部署 2026-06-25 20:23:23 +08:00
selfrelease e65da6f294 feat: 接入法制日报机构并新增 15 应用 Playwright 回归测试
- 新增法制日报机构种子数据(机构/用户/分类/15应用/知识库),登录页默认账号预填
- 引入 Playwright e2e:登录复用 storageState,覆盖对话/补全/工作流/智能体四类交互
- 配置测试脚本与产物 gitignore

Co-authored-by: Cursor <cursor@cursor.com>
2026-06-25 19:47:15 +08:00
selfrelease 8959456eb7 feat: 优化追问功能 - LLM智能生成 + 显示位置修复
- 修复 AuthLoader 组件中 router.push 在渲染期间调用的 React 警告
- 追问问题改为只在最新 AI 回复下方显示(修复多处显示问题)
- 新增 LLM 生成追问 API:POST /api/v1/apps/{id}/suggestions
- 前端调用 LLM API 生成智能追问,失败时降级到规则生成
- 登录页填入默认测试账号 kj-admin@govai.gov.cn
2026-06-23 15:35:58 +08:00
selfrelease 96b944ac8d chore: 前端代码优化 - ESLint 配置、Prettier 格式化、加载骨架屏、React 组件规范
- 更新 ESLint 配置添加 react-hooks 规则
- 运行 Prettier 格式化所有前端文件
- 为 users、apps、audit、quotas 页面添加 Skeleton 加载骨架屏
- 修复动态组件渲染问题(CategoryIcon/TypeIcon 使用 React.createElement)
- 修复 useRef 渲染期间访问问题(改用 useMemo)
- 修复 effect 中 setState 同步调用问题
- 新增 global-not-found.tsx 404 页面
- 修复 knowledge 页面引号转义问题
2026-06-23 14:48:31 +08:00
selfrelease 6ca1c27162 fix: 修复前端编译 TS 错误
- App 类型补充 is_favorited?: boolean 字段
- platform/providers 页面 testConnection mutationFn 补充泛型参数
2026-06-23 14:48:31 +08:00
selfrelease 65dc805eb5 feat: 系统优化 - ESLint、Tailwind、前端健壮性、后端工程化、运维可观测性
- 前端: ESLint+Prettier配置、Tailwind v4配置、ErrorBoundary、全局AuthLoader优化、ReactQuery分层
- 后端: MinIO凭证移除、Docker统一为govai品牌、zerolog日志封装、错误码枚举、文件上传校验、单元测试(13项全通过)
- 运维: 健康检查增强(PG/Redis ping)、Prometheus指标(/metrics端点)、多租户tenant包、RateLimit nil防御
- 移动: citation_prompt.txt → internal/assets/
2026-06-23 14:48:31 +08:00
freedakgmail 91f4fac23c docs: 添加本地LLM启动命令文档 2026-06-23 09:15:59 +08:00
freedakgmail d31bdd1261 feat: 增强聊天功能和 markdown 渲染
- 优化聊天 UI 组件交互体验
- 扩展 markdown 渲染功能支持
- 更新类型定义
- 重构 LLM 聊天处理逻辑
- 更新模型提供商种子数据
2026-06-23 00:46:08 +08:00
freedakgmail 95dee5a70e feat: 完善来源标注徽章功能和配置优化
后端改进:
- 改进 addCitationsToResponse 函数,更激进地添加来源标注
- 支持识别所有有实质内容的行(长度>5)
- 优化特殊行的识别逻辑,保留'依据引用'、'分析'、'建议'等内容行
- 修复 go.mod 中 lib/pq 的依赖问题
- 优化字符串拼接效率(使用 fmt.Fprintf)
- 添加 Scanner 错误检查

前端改进:
- 优化徽章样式,增大尺寸和间距
- 改用 bg-blue-100 和 bg-orange-100 背景
- 添加 hover 效果和 cursor-pointer

配置优化:
- LLM 服务地址改为 IP(192.168.1.6:18888),支持外部调用
- 本地服务保持 localhost,性能更优

测试:
- 新增 6 个单元测试用例,全部通过
- 验证清单项、列表项、陈述句等各种格式的标注

文档:
- 添加实现方案文档
- 添加用户使用指南
2026-06-22 20:50:18 +08:00
selfrelease 73d1e00303 feat: 实施来源徽章后处理逻辑,确保100%显示
- 添加enhanceCitations等6个智能标注函数
- 自动为回答添加[[知识库:xxx]]和[[AI建议]]徽章
- 智能判断标注类型(事实陈述vs建议说明)
- 保护代码块和引用块不被标注
- 修改Chat和Completion函数应用后处理
- 添加extractKnowledgeSources提取知识库来源

新增文档:
- CITATION_BADGE_SOLUTION.md - 完整解决方案
- CITATION_POST_PROCESSING_REPORT.md - 实施报告
- citation_prompt.txt - 优化后的prompt模板
- test-citation-badges.sh - 测试脚本
2026-06-22 19:05:10 +08:00
selfrelease 8d92eb0b34 chore: 删除临时测试文件 test_password.go 2026-06-22 18:48:13 +08:00
selfrelease 108a17bdaf chore: 代码格式化 - go fmt 自动调整 2026-06-22 18:47:52 +08:00
selfrelease 96930b585c feat: 优化模型配置管理 - 动态使用优先级最高的Provider
## 主要改进

### 1. 数据库驱动的模型配置
- 新增 GetActiveProviderWithModel() 方法,从数据库获取优先级最高的 Provider 及其默认模型
- 支持多 Provider 配置,通过 priority 字段控制优先级
- 实现 5 分钟缓存机制,减少数据库查询

### 2. 应用模型配置优化
- 移除应用层硬编码模型配置
- 应用自动使用优先级最高的 Provider 的默认模型
- 支持应用级模型覆盖(可选)

### 3. 工具脚本
- check-providers: 查询数据库中的 Provider 和应用配置
- fix-providers: 修复 Provider 配置(补全 config 和 models 字段)
- clear-app-models: 清空应用硬编码模型配置

### 4. 代码质量
- 删除未使用的 getProvider() 方法
- 修复 fmt.Println 冗余换行警告
- 统一代码格式

## 技术细节

**降级策略**:
数据库 Provider (优先级) → 环境变量 Provider → 应用配置模型

**当前配置**:
- 优先级 110: 本地LLM (qwen2.5-7b-instruct)
- 优先级 100: 阿里云百炼 (qwen-plus)

所有 41 个应用现在自动使用本地模型,无需手动配置。
2026-06-22 18:46:44 +08:00
selfrelease 0c1a8544e8 feat: 平台管理 - 模型提供商连接测试功能
- 前端:添加"测试连接"按钮,支持实时测试 provider 可用性
- 后端:新增 TestProvider 接口,发送测试请求验证配置
- 路由:注册 POST /providers/{id}/test 端点
- 初始化:LLM Manager 优先从数据库加载 providers,失败时回退到环境变量
- .gitignore:忽略构建产物 server/bin/、server-* 和 test-* 目录
2026-06-22 18:05:19 +08:00
selfrelease fe2c6fb2e4 fix: 修正 OpenAI/Anthropic Provider 初始化参数顺序
修复 manager.go 中两处调用 NewOpenAIProvider 和 NewAnthropicProvider
时参数顺序错误的问题。原代码将 baseURL 和 apiKey 参数传反,导致
API key 被当作 URL 使用,引发 "unsupported protocol scheme" 错误。

Changed:
- LoadProvidersFromDB: 调整参数顺序为 (apiKey, baseURL, "")
- GetActiveProvider: 调整参数顺序为 (apiKey, baseURL, "")
2026-06-22 18:02:23 +08:00
selfrelease 56401ec7ee feat: 环境配置纳入版本管理并更新文档
- 将 .env 和 .env.local 纳入版本管理
- 更新 .gitignore,移除对环境文件的忽略
- 在 README.md 中添加详细的数据库配置和启动说明
- 同步 server/.env 与项目根目录配置
- 修复后端数据库连接问题
2026-06-22 16:00:16 +08:00
selfrelease 97feb42afb docs: 宣传材料与方案文档归整到 docs/ 目录 2026-06-16 23:36:56 +08:00
selfrelease 81c2f58373 docs: 新增法智通政法机关版/律师版宣传材料(PDF/PPTX/MD)、架构图与系统UI截图 2026-06-16 23:28:58 +08:00
selfrelease 654d99c5e9 fix(web): 离线/内网环境改用系统字体,避免构建时联网下载 Google 字体 2026-06-16 23:28:43 +08:00
selfrelease 247da7b43c docs: 添加法治日报法治网舆情服务方案.pdf 2026-06-16 20:56:30 +08:00
freedakgmail 0f490f72a9 Initial commit: GovAI 政务AI平台 2026-06-15 23:48:37 +08:00