|
|
2 viikkoa sitten | |
|---|---|---|
| .gitignore | 2 viikkoa sitten | |
| README.md | 2 viikkoa sitten | |
| app.md | 2 viikkoa sitten | |
| app.py | 2 viikkoa sitten | |
| pyproject.toml | 2 viikkoa sitten |
本项目是一个基于 B/S 架构的 Web 应用程序,采用 Tornado MVC 组织代码,目标是构建“AI智能瞭望与智能问数系统”。当前已具备较完整的后台管理能力(RBAC 权限、模型引擎、瞭望采集与数据仓库等),并提供若干独立业务页面用于采集与测试。
app/static/dist/ 目录):
app/static/dist/echarts/echarts.min.js)本项目采用了经典的 MVC(Model-View-Controller)设计模式:
sqlite3 与数据库交互,通过实体类(如 UserRepository)封装数据操作。base.html, login.html, index.html)。RequestHandler 的形式存在(如 LoginHandler, IndexHandler)。cnAgentOS/
├── app.md # 原有目录结构说明文档
├── app.py # 项目主入口,Tornado Web 容器及路由配置
├── test.py # 单元测试与临时测试脚本,包含数据库初始化和用户测试
├── app/ # 核心应用程序包
│ ├── __init__.py # 标识 app 为 Python 包
│ ├── controllers/ # 控制层 (Controller)
│ │ ├── __init__.py # 标识 controllers 为 Python 包
│ │ ├── auth.py # 认证相关路由 (登录、退出)
│ │ ├── base.py # 基础 RequestHandler,提供公共方法(如 get_current_user)
│ │ ├── home.py # 后台首页/控制台(动态菜单渲染)
│ │ ├── portal.py # 用户侧(登录/注册/问数/历史对话/流式对话)
│ │ ├── user.py # 用户管理(CRUD/分页/角色绑定)
│ │ ├── role.py # 角色管理(CRUD/超管保护)
│ │ ├── menu.py # 功能菜单管理(树形CRUD)
│ │ ├── model_engine.py # 模型引擎(CRUD/默认模型/Token统计/测试对话SSE)
│ │ ├── api_manage.py # 接口管理(CRUD/分页/对内代理服务/QPS限制)
│ │ ├── digital_employee.py # 数字员工(CRUD/分页/@别名解析/SSE对话/普通类接口调用/记忆管理/技能路由)
│ │ ├── skill_manage.py # 技能管理(全局技能库 CRUD/zip 导入/与数字员工联动)
│ │ ├── chat_admin.py # 会话/对话管理(后台查看/搜索/删除)
│ │ ├── spy_source.py # 瞭望采集源管理(CRUD/启用列表)
│ │ ├── spy.py # 瞭望采集(SSE日志+候选数据推送+手动入库)
│ │ └── data_warehouse.py # 数据仓库(列表/删除/批删/AI深度采集/详情查看)
│ ├── models/ # 模型层 (Model)
│ │ ├── __init__.py # 标识 models 为 Python 包
│ │ ├── db.py # 数据库连接池与初始化建表脚本
│ │ ├── user.py # 用户与用户-角色映射
│ │ ├── role.py # 角色与角色-菜单映射
│ │ ├── menu.py # 菜单树构建与按角色过滤
│ │ ├── model_engine.py # 模型服务与Token统计
│ │ ├── api_manage.py # 接口管理数据访问(api_endpoints)
│ │ ├── digital_employee.py # 数字员工数据访问(digital_employees + 全局 skills/links + 记忆管理)
│ │ ├── skill_manage.py # 技能管理数据访问(全局技能库 + 导入解析)
│ │ ├── chat.py # 会话/对话管理(CRUD/搜索/导出/后台管理)
│ │ ├── spy_source.py # 采集源管理
│ │ └── data_warehouse.py # 数据仓库(含 upsert_batch / 深采详情查询 / 会话存储)
│ ├── static/ # 静态资源 (View 辅助)
│ │ ├── css/base.css # 基础样式表
│ │ └── js/base.js # 基础脚本
│ └── templates/ # 模板文件 (View)
│ ├── base.html # 基础母版页面
│ ├── index.html # 后台首页模板
│ ├── login.html # 登录页面模板
│ ├── dashboard.html # 控制台(ECharts 报表 + 懒加载 + 历史回放)
│ ├── user/list.html # 用户管理页
│ ├── role/list.html # 角色管理页
│ ├── menu/list.html # 功能菜单管理页
│ ├── model_engine/list.html # 模型引擎页
│ ├── api_manage/list.html # 接口管理页
│ ├── digital_employee/list.html # 数字员工管理页
│ ├── skill_manage/list.html # 技能管理页(全局技能库 + zip 导入)
│ ├── chat_admin/sessions.html # 会话管理页(后台查看/搜索/删除)
│ ├── chat_admin/messages.html # 对话管理页(消息查看/检索)
│ ├── spy/source_list.html # 瞭望数据源管理页
│ ├── spy/spy.html # 瞭望采集页(独立搜索风格)
│ ├── data_warehouse/list.html # 数据仓库列表页
│ └── portal/ # 用户侧页面
│ ├── login.html # 用户登录
│ ├── register.html # 用户注册
│ └── chat.html # 智能问数(历史会话 + 流式对话 + 模型切换 + @数字员工)
├── database/ # 数据库文件存放目录
│ └── app.db # SQLite 数据库文件 (由程序自动生成)
└── venv/ # Python 虚拟环境目录
当前系统已完成以下核心功能:
app.py 启动 Tornado 服务,配置模板/静态资源路径、安全 Cookie(cookie_secret)以及 CSRF 防护(xsrf_cookies)。init_db() 自动建表,并对历史库做兼容(例如为 spy_data 补列、建立唯一索引)。set_secure_cookie)。BaseHandler.get_current_user() 提供统一登录态获取;@tornado.web.authenticated 保护页面与接口。model_name/api_key/base_url)。/api/interface_proxy?id=<endpoint_id>。SKILL.md(YAML frontmatter)入库。skills 表 + digital_employee_skill_links 绑定关系表)。控制台(管理侧):
/static/dist/echarts/echarts.min.js)。用户侧卡片与对话增强:
/api/audio_proxy 音频代理接口(Base64 编码 URL),解决跨域和 Referer 限制,点击播放按钮可正常播放。| 列1 | 列2 | 格式),生成 <table>/<thead>/<tbody> 结构,样式支持圆角边框/表头高亮/行悬停/横向滚动。/、/login、/register、/chat、/logout/api/models、/api/employees、/api/sessions、/api/messages、/api/chat/stream、/api/audio_proxy/admin(后台框架)、/admin/login、/admin/logout、/admin/dashboard/api/dashboard(current/history_list/history_get)/auth/login、/auth/logout、/dashboard/user/list、/role/list、/menu/list(对应 API:/api/user、/api/role、/api/menu)/model_engine/list(API:/api/model_engine、/api/model_engine/test)/api_manage/list(API:/api/api_manage、/api/interface_proxy)/digital_employee/list(API:/api/digital_employee、/api/digital_employee/chat)/skill_manage/list(API:/api/skill_manage)/chat_admin/sessions(API:/api/chat_admin/sessions)/chat_admin/messages(API:/api/chat_admin/messages)/spy_source/list(API:/api/spy_source)、/spy(API:/api/spy/run、/api/spy/commit)/data_warehouse/list(API:/api/data_warehouse)核心表(由 app/models/db.py:init_db() 创建/维护):
users:用户基础信息roles:角色menus:菜单/功能user_roles:用户-角色映射role_menus:角色-菜单映射ai_models:模型服务配置(含 is_default、total_tokens)api_endpoints:接口管理(URL/Method/限流参数/绕过 Token/示例请求等)digital_employees:数字员工(alias 唯一;AI Prompt 或绑定 api_endpoint_id)digital_employee_memories:数字员工记忆(employee_id + user_id 唯一,存储结构化摘要)skills:全局技能库(skill_key 唯一;spec_markdown/YAML frontmatter;绑定接口服务)digital_employee_skill_links:数字员工与技能的绑定关系(employee_id + skill_id 联合主键)spy_sources:瞭望采集源spy_data:数据仓库(包含 update_at;并对 (source_id,url) 建立唯一索引用于去重与 upsert;包含深采状态字段)spy_data_details:深采详情(与 spy_data.id 关联,保存正文/摘要/关键词/要点/统计等)chat_sessions:用户侧历史会话chat_messages:用户侧历史消息(流式结果最终落库)dashboard_snapshots:控制台指标快照(用于历史回放)在后续开发“AI智能瞭望与智能问数系统”时,请遵循以下规范:
app/controllers/ 目录下创建新的 .py 文件,继承 app.controllers.base.BaseHandler。get, post)上添加 @tornado.web.authenticated 装饰器。app.py 中的 make_app() 路由列表里注册新路由。app/models/ 目录下创建新的业务模型文件。app/models/db.py 的 init_db() 方法中追加相应的 CREATE TABLE IF NOT EXISTS 语句。XxxRepository 静态方法中。app/templates/ 下,建议继承 base.html 保持页面结构统一。<form> 标签内包含 {% module xsrf_form_html() %} 以通过 CSRF 校验。app/static/ 目录下,在模板中通过 {{ static_url('...') }} 引用。{% block style %} 中(由 base.html 在 head 内输出),避免样式丢失。test.py 中编写临时的功能测试代码。