CynthiaOmovoiye/ai-advisory-platform

GitHub: CynthiaOmovoiye/ai-advisory-platform

一个以确定性规则引擎为核心、辅以LLM增强推理的企业AI就绪度评估与咨询报告平台。

Stars: 1 | Forks: 0

# AI 咨询平台 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d6fffd4a8a143942.svg)](https://github.com/CynthiaOmovoiye/ai-advisory-platform/actions/workflows/ci.yml) 本仓库是一个**最初以设计为导向,现已完全实现的作品集项目**。 它的构建方式与真实系统一致:首先是设计和决策(`docs/` 包), 然后是基于该设计开发可运行的全栈应用程序。这两部分是共同交付的 —— ADR/威胁模型解释了*为什么*这么做,而代码(140 个后端测试,CI 通过, 可运行的 `docker compose` 栈)则是具体的*成果*。 如果你只打算阅读三个文件,请读这些: 1. [`docs/architecture/system-architecture.md`](docs/architecture/system-architecture.md) — 系统的架构方式及其原因。 2. [`docs/portfolio-story.md`](docs/portfolio-story.md) — 每个重大决策背后的逻辑。 3. [`docs/security/threat-model.md`](docs/security/threat-model.md) — 系统可能如何受到攻击以及如何进行防御。 刚接触本应用并想*使用*它?请从[**用户指南**](docs/user-guide.md)开始 —— 这是一份包含操作流程和各个页面的分步手册。 ## 核心理念 大多数“AI 产品”将 LLM 放在关键路径上并寄予厚望。而这个项目恰恰相反。 ``` Structured assessment data │ ▼ ┌───────────────┐ deterministic, auditable, testable │ RULE ENGINE │ ──► findings + recommendations (the source of truth) └───────────────┘ │ ▼ ┌───────────────┐ LLM *explains* and *narrates* findings — │ LLM ENHANCEMENT│ ──► it never invents them └───────────────┘ │ ▼ Reviewed report (consultant-in-the-loop) ──► PDF ``` LLM 是**基于确定性核心的表示与推理层**,而不是 决策者。每一条建议都可以追溯到特定的规则、输入和 规则版本。这是本项目中最重要的一项设计决策,它的影响贯穿始终 —— 参见 [ADR-0003](docs/adr/0003-rule-engine-then-llm.md)。 ## 本项目展示了什么 | 能力 | 查看位置 | |---|---| | AI 系统设计(规则 → LLM,而不是 LLM → 一切) | [ADR-0003](docs/adr/0003-rule-engine-then-llm.md), [系统架构](docs/architecture/system-architecture.md) | | 生产级 AI 评估(准确性、一致性、幻觉、回归) | [ADR-0005](docs/adr/0005-evaluation-framework.md) | | LLM 网关 / 提供商抽象 (OpenRouter) | [ADR-0004](docs/adr/0004-openrouter-llm-gateway.md) | | AI 的可观测性(延迟、token、成本、评估得分) | [系统架构](docs/architecture/system-architecture.md#observability) | | 多租户隔离 | [ADR-0006](docs/adr/0006-multi-tenancy-isolation.md) | | 安全优先的工程实践 | [安全审查](docs/security/security-review.md), [威胁模型](docs/security/threat-model.md) | | 分层架构与领域边界 | [ADR-0002](docs/adr/0002-layered-architecture.md) | | 数据建模 (Postgres, JSONB, pgvector) | [ERD](docs/architecture/erd.md), [schema](db/schema.sql), [ADR-0008](docs/adr/0008-postgres-jsonb-pgvector.md) | ## 技术栈 **前端** — Next.js (App Router), TypeScript, TailwindCSS, React Query, Zod **后端** — FastAPI, Python 3.12+, Pydantic v2, SQLAlchemy 2.x, Alembic **数据** — PostgreSQL (JSONB + `pgvector`), Redis (缓存 + Celery broker) **任务** — Celery (报告生成、评估运行、LLM 增强) **存储** — 本地使用 MinIO,生产环境中使用兼容 S3 的抽象层 **LLM** — 使用 OpenRouter 作为跨提供商的单一网关 ([ADR-0004](docs/adr/0004-openrouter-llm-gateway.md)) **报告** — 通过 Playwright (Chromium) 实现 HTML → PDF 转换 **基础设施** — Docker + Docker Compose **质量保证** — Pytest, Playwright, Ruff, Black, MyPy 特意选用这些成熟稳定的技术。每一个组件都有其存在的价值;参见 [portfolio-story.md](docs/portfolio-story.md)。 ## 系统模块 1. **身份与访问管理** — 注册、登录、密码重置、个人资料、RBAC。 2. **组织管理** — 组织、成员、邀请;严格的租户隔离。 3. **评估引擎** — 跨越 7 个类别的动态、版本化评估 schema。 4. **规则引擎** — 基于数据库驱动,无需部署即可编辑的确定性建议。 5. **AI 建议层** — 通过 OpenRouter 在规则输出之上进行 LLM 增强。 6. **评估框架** — 准确性、一致性、完整性、幻觉率;回归测试。 7. **可观测性层** — 请求/LLM 延迟、token、成本、评估得分、仪表盘。 8. **报告生成** — 执行摘要、风险、安全、治理、路线图 → PDF。 9. **顾问工作区** — 审查、编辑发现、批准、发布。 10. **管理仪表盘** — 组织/评估/报告/AI 使用情况/评估/系统健康指标。 ## 仓库结构 ``` ai-advisory-platform/ ├── README.md ← you are here ├── docker-compose.yml ← local dev topology (design) ├── .env.example ← required configuration surface ├── db/ │ └── schema.sql ← canonical PostgreSQL schema (DDL) └── docs/ ├── portfolio-story.md ← why every decision was made ├── architecture/ │ ├── system-architecture.md ← C4-ish views + data flow │ └── erd.md ← entity-relationship model ├── adr/ ← Architecture Decision Records │ ├── 0001 … record ADRs │ ├── 0002 … layered architecture │ ├── 0003 … rule engine → LLM │ ├── 0004 … OpenRouter gateway │ ├── 0005 … evaluation framework │ ├── 0006 … multi-tenancy isolation │ ├── 0007 … auth choice │ └── 0008 … Postgres / JSONB / pgvector ├── security/ │ ├── security-review.md │ └── threat-model.md ← STRIDE ├── api/ │ └── openapi.yaml ← contract-first API surface ├── deployment-guide.md └── onboarding-guide.md ``` ## 状态 所有十个模块均已**实现并可运行**(`docker compose up --build` → 点击演示)。已完成的内容: - **规则引擎领域核心** — 安全的条件评估器、基础事实检查、LLM 提供商 接口、评估框架(阶段 6)。 - **授权 + 租户隔离内核** 以及分层的服务/存储库 `complete-assessment` 用例(阶段 4-5)。 - **真实的 OpenRouter 提供商**(重试、退避、token/成本遥测), **SQLAlchemy 存储库 + Alembic**,以及带有默认拒绝防护的 **FastAPI API**、 经过净化处理的错误信息和安全标头(阶段 7 + 应用组装)。 - **Celery worker + 报告生成**(通过 Playwright 实现 HTML→PDF,位于渲染器 接口之后;XSS 转义内容),在 API 中验证的**真实 session-token 身份验证** (Next-BFF 契约,[ADR-0009](docs/adr/0009-auth-bff-session-token.md)),以及 **Next.js 前端**(App Router, React Query, Zod, Auth.js),其 BFF token 生成 与后端验证器完全对应。 - **顾问工作区**(编辑/批准/拒绝建议),在报告发布前带有**批准 门禁**,**管理 + 评估仪表盘**(真实的指标聚合 + 持久化的评估运行),以及 接入 API 的**报告端点**。 领域核心在**零依赖**下运行;完整的后端包含 **140 个通过的 测试**,全部离线运行(httpx `MockTransport`, SQLite, FastAPI `TestClient`,伪造的 PDF 渲染器)。整个 评估→审查→发布 的生命周期通过 HTTP 执行: ``` cd backend # domain core,无 install: PYTHONPATH=. python3 scripts/demo.py # rule engine → grounded enhancement → eval gate # full suite: python3 -m venv .venv && source .venv/bin/activate && pip install -e ".[dev]" pytest -q # 140 passed ``` 前端 ([`frontend/`](frontend/README.md)) 是一个 Next.js App Router 应用;其 `lib/` 核心类型检查无误,可以通过 `npm install && npm run dev` 运行。 这些测试将安全模型证明为*可执行*的行为:失败即拒绝(fail-closed)的身份验证、 默认拒绝的 RBAC,以及跨租户访问在**两个**独立的层 (授权层**和**租户范围存储库)被阻止 —— 这一切均通过 HTTP 层 验证。 详见 [`backend/README.md`](backend/README.md)。构建顺序、验证门禁以及 每个阶段产生的成果均在 [`docs/portfolio-story.md`](docs/portfolio-story.md#build-phases) 中定义。代码是基于 该设计提交的,而不是超前于设计。 ## 运行整个项目 仅需一条命令即可在 Postgres 上启动全栈 —— 无需 `OPENROUTER_API_KEY` (未设置密钥时,LLM 层会回退到确定性的、基于事实的 mock): ``` cp .env.example .env docker compose up --build # postgres + redis + minio + api + worker + web ``` `api` 入口点会运行 Alembic 迁移并植入一个演示组织 + 评估,然后: | 服务 | URL | |---|---| | Web 应用 | http://localhost:3000 | | API + OpenAPI 文档 | http://localhost:8000/v1 · http://localhost:8000/docs | | MinIO 控制台 | http://localhost:9001 | **点击演示:** 植入的种子数据创建了一个真实的、持久化的本地账号: `demo@example.com` / `ChangeMe123!`,位于 `Demo Organization` 中,并具有组织范围的 `consultant` 角色。打开 Web 应用 → **登录** → **评估** → 打开植入的 评估 → **完成**(规则引擎 + 基于事实的 LLM 增强)→ 审查并 **批准**发现的问题 → **发布报告**(HTML→PDF,存储在 MinIO 中)。平台 管理仪表盘需要真实的 `admin` 角色,不能通过注册或演示 登录获得。 有关生产环境的拓扑结构、密钥和操作,请参阅 [`docs/deployment-guide.md`](docs/deployment-guide.md) 和 [`docs/onboarding-guide.md`](docs/onboarding-guide.md)。 ## 许可证 作品集 / 教育用途。
标签:DLL 劫持, 云计算, 人工智能, 企业治理, 大语言模型, 搜索引擎查询, 测试用例, 特征检测, 用户模式Hook绕过, 规则引擎, 评估平台, 请求拦截, 逆向工具