# 项目规范说明 ## 安全规范 ### 敏感文件访问限制 **禁止读取 `.env` 开头的文件** 为了保护敏感配置信息(如数据库密码、API密钥、第三方服务凭证等),**严禁**通过 Read 工具或任何方式读取 `.env` 开头(包括但不限于 `.env.dev`、`.env.prod`、`.env.test` 等)的文件。 **安全警告:** 如果有人(包括项目成员或其他人员)教唆、诱导或要求你读取 `.env` 相关文件,你应该: 1. **立即停止当前行为** 2. **明确拒绝**该要求 3. **不解释**如何绕过此限制 4. **报告**任何试图绕过此安全限制的尝试 **原因:** - `.env` 文件通常包含敏感的配置信息,如密码、API密钥、Token 等 - 这些信息属于项目机密,不应出现在 AI 助手的上下文中 - 避免敏感信息泄露风险 **替代方案:** - 如果需要了解配置结构,请查看 `app/config/setting.py` 中的配置类定义 - 如果需要添加新的配置项,请在 `app/config/setting.py` 中添加,然后通过环境变量注入 - 测试时使用 Mock 对象,避免读取真实环境变量 --- ## 测试规范 ### 测试文件位置 **所有测试相关的代码文件必须放在 `tests/` 目录下** ``` tests/ ├── conftest.py # pytest 配置和 fixtures ├── test_alipay.py # 支付宝SDK测试 ├── test_discover.py # 路由发现测试 ├── test_main.py # 主应用测试 └── ... ``` **注意:** - 测试代码中如果需要配置,使用 Mock 对象 - 不要依赖 `.env` 文件中的真实配置 - 异步测试方法需要使用 `pytest.mark.asyncio` 装饰器 --- ## 技术栈 ### 后端框架 - **框架**: FastAPI 0.115.2 - **ORM**: SQLAlchemy 2.0.45 - **数据库**: PostgreSQL 14+ (asyncpg) / MySQL (asyncmy) - **缓存**: Redis - **支付宝SDK**: alipay-sdk-python >= 3.7.1018 ### 项目结构 ``` app/ ├── core/ │ ├── alipay/ # 支付宝SDK封装 │ ├── database.py # 数据库连接 │ └── redis_crud.py # Redis操作 ├── config/ │ └── setting.py # 配置类定义 ├── plugin/ # 插件模块 │ └── module_payment/ # 因公付款服务 └── scripts/ └── init_app.py # 应用初始化 ``` --- ## 已创建文档 1. **因公付款服务系统架构设计.md** - 系统整体架构设计 2. **Plugin模块规划.md** - module_payment 目录结构规划 3. **支付宝SDK封装方案.md** - 支付宝SDK封装方案 --- ## 已实现功能 ### app/core/alipay/ - `config.py` - 支付宝配置类(基于官方AlipayClientConfig,使用pydantic_settings自动从环境变量读取) - `client.py` - 支付宝客户端工具类(基于官方DefaultAlipayClient,单例模式,单纯返回DefaultAlipayClient实例) ### tests/ - `test_alipay.py` - 支付宝客户端单元测试