Update(Documents): 更新了全部的文档,使得他更符合新的需求
This commit is contained in:
parent
d1495fc446
commit
2f99b3b821
|
|
@ -5,21 +5,27 @@
|
|||
* **日期**: [YYYY-MM-DD]
|
||||
|
||||
## 1. 背景 (Context)
|
||||
|
||||
*描述我们需要解决的问题是什么,以及当前的限制条件。*
|
||||
*例如:当前的标书生成速度过慢(平均 5分钟),因为是同步调用 LLM。并发量上来后,服务器阻塞严重。*
|
||||
|
||||
## 2. 决策 (Decision)
|
||||
|
||||
*描述我们决定做什么。*
|
||||
*例如:我们将引入 Celery + Redis 实现异步任务队列,将生成任务剥离出主线程。*
|
||||
|
||||
## 3. 备选方案 (Alternatives)
|
||||
|
||||
*我们还考虑了什么方案?为什么没选?*
|
||||
|
||||
* **方案 A**:使用 Python 原生 asyncio。
|
||||
* *原因*:CPU 密集型任务下 asyncio 表现不佳,且无法跨机器扩展。
|
||||
* **方案 B**:使用 Kafka。
|
||||
* *原因*:对于当前体量,Kafka 运维成本过高,Redis 足够轻量。
|
||||
|
||||
## 4. 后果 (Consequences)
|
||||
|
||||
*决策带来的好处和坏处(权衡)。*
|
||||
|
||||
* **好**:API 响应时间降至 100ms;支持水平扩展 Worker 节点。
|
||||
* **坏**:增加了运维 Redis 和 Celery Worker 的复杂度;调试异步任务比同步代码困难。
|
||||
Binary file not shown.
|
|
@ -3,16 +3,23 @@
|
|||
本项目的所有显著更改都将记录在此文件中。
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
- 新增了 Docker 部署脚本 (MR-102)。
|
||||
- 支持了 GPT-4o 模型接口。
|
||||
|
||||
## [1.0.1] - 2025-11-04
|
||||
|
||||
### Fixed
|
||||
|
||||
- 修复了用户登录时 Token 过期导致的 500 错误 (#45)。
|
||||
- 修复了移动端 CSS 样式错乱问题。
|
||||
|
||||
## [1.0.0] - 2025-10-01
|
||||
|
||||
### Added
|
||||
|
||||
- 初始化项目,完成基础架构搭建。
|
||||
- 实现标书生成的 MVP 版本。
|
||||
|
||||
Binary file not shown.
|
|
@ -6,6 +6,7 @@
|
|||
这里写项目描述。例如:本项目是“南方电网标书生成系统”的后端服务,基于 LLM 实现标书内容的自动化生成与审核。
|
||||
|
||||
🛠 技术栈
|
||||
|
||||
- **Language**: Python 3.10+
|
||||
- **Framework**: FastAPI, LangChain
|
||||
- **Database**: PostgreSQL, Redis
|
||||
|
|
@ -15,6 +16,7 @@
|
|||
|
||||
1. 环境准备
|
||||
确保本地已安装:
|
||||
|
||||
- Docker & Docker Compose
|
||||
- Python 3.10+ (推荐使用 Conda)
|
||||
|
||||
|
|
@ -32,19 +34,21 @@ pip install -r requirements.txt
|
|||
docker-compose up -d db redis
|
||||
启动服务
|
||||
uvicorn main:app --reload
|
||||
访问 http://localhost:8000/docs 查看 API 文档。
|
||||
访问 <http://localhost:8000/docs> 查看 API 文档。
|
||||
|
||||
🏗 架构与目录结构
|
||||
目录结构
|
||||
/src
|
||||
|
||||
```/src
|
||||
/api # 接口层
|
||||
/core # 核心配置与工具
|
||||
/services # 业务逻辑
|
||||
/models # 数据库模型
|
||||
tests/ # 单元测试
|
||||
docs/ # 详细文档
|
||||
```
|
||||
|
||||
.
|
||||
```.
|
||||
├─docs # 详细文档
|
||||
├─src
|
||||
│ ├─api # 接口层
|
||||
|
|
@ -52,12 +56,11 @@ docs/ # 详细文档
|
|||
│ ├─models # 数据库模型
|
||||
│ └─services # 业务逻辑
|
||||
└─tests # 单元测试
|
||||
```
|
||||
|
||||
架构图
|
||||
这里插入图片链接
|
||||
|
||||
👥 维护者
|
||||
· Owner:@管元恺(oldpipe0123@gmail.com)
|
||||
· Owner:@管元恺(<oldpipe0123@gmail.com>)
|
||||
· Backup:@陈长文
|
||||
|
||||
🤝 贡献指南(公司项目不需要)
|
||||
Binary file not shown.
|
|
@ -0,0 +1,21 @@
|
|||
# git commit template
|
||||
|
||||
## type (必填):提交的类别
|
||||
|
||||
- feat: 新功能 (feature)
|
||||
- fix: 修补 bug
|
||||
- docs: 仅文档更改 (documentation)
|
||||
- style: 格式变动,不影响代码运行 (whitespace, formatting, missing semi-colons)
|
||||
- refactor: 重构 (即不是新增功能,也不是修改bug的代码变动)
|
||||
- perf: 提高性能的代码更改
|
||||
- test: 增加测试或修改现有测试
|
||||
- chore: 构建过程或辅助工具的变动 (maintain)
|
||||
- revert: 回滚提交
|
||||
|
||||
## scope (选填):说明影响的范围(如模块名、组件名)
|
||||
|
||||
例:feat(auth): ..., fix(nav-bar): ...
|
||||
|
||||
## subject (必填)
|
||||
|
||||
简短描述,不超过 50 个字符,使用祈使句,结尾不加句号。
|
||||
Binary file not shown.
|
|
@ -1,16 +1,24 @@
|
|||
# PULL REQUEST TEMPLATE
|
||||
|
||||
## 📝 变更目的 (Objective)
|
||||
|
||||
## 🛠 变更内容 (Changes)
|
||||
|
||||
- [ ] 核心逻辑:修改了 X 算法的权重计算方式
|
||||
- [ ] 数据库:新增 `user_status` 字段
|
||||
- [ ] 配置:在 `config.yaml` 中添加了 Redis 超时设置
|
||||
|
||||
## 📸 测试截图/证据 (Screenshots / Proof)
|
||||
|
||||
## 🧪 测试计划 (Test Plan)
|
||||
|
||||
1. 单元测试:运行 `pytest tests/auth` 通过
|
||||
2. 手动测试:模拟用户登录失败 3 次,验证验证码是否弹出
|
||||
|
||||
## ⚠️ 风险与副作用 (Risks & Side Effects)
|
||||
|
||||
## ✅ 自查清单 (Self Checklist)
|
||||
|
||||
- [ ] 我的代码遵循项目的代码风格 (Lint 通过)
|
||||
- [ ] 我已经添加了必要的注释/文档
|
||||
- [ ] 我没有提交敏感信息 (Passwords/Tokens)
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -0,0 +1,50 @@
|
|||
root = true
|
||||
|
||||
# --- 全局设置 ---
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
tab_width = 4
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
max_line_length = 100
|
||||
|
||||
# --- C# 专属设置 (关键) ---
|
||||
[*.cs]
|
||||
# 1. 缩进:强制 Tab
|
||||
indent_style = tab
|
||||
|
||||
# 2. 大括号风格:K&B (Open brace on same line)
|
||||
# 这是一个“叛逆”的设置,因为 C# 默认是换行的
|
||||
csharp_new_line_before_open_brace = none
|
||||
csharp_new_line_before_else = true
|
||||
csharp_new_line_before_catch = true
|
||||
csharp_new_line_before_finally = true
|
||||
|
||||
# 3. 命名规范检查 (适配您的 UserDetail / GetUser / userName)
|
||||
# 说明:EditorConfig 可以配置 Roslyn 分析器来检查命名
|
||||
|
||||
# 类 (Class) -> PascalCase (UserDetail)
|
||||
dotnet_naming_rule.classes_must_be_pascal_case.severity = warning
|
||||
dotnet_naming_rule.classes_must_be_pascal_case.symbols = classes
|
||||
dotnet_naming_rule.classes_must_be_pascal_case.style = pascal_case
|
||||
|
||||
dotnet_naming_symbols.classes.applicable_kinds = class, struct, enum, interface
|
||||
dotnet_naming_style.pascal_case.capitalization = pascal_case
|
||||
|
||||
# 方法 (Method) -> PascalCase (GetUser)
|
||||
dotnet_naming_rule.methods_must_be_pascal_case.severity = warning
|
||||
dotnet_naming_rule.methods_must_be_pascal_case.symbols = methods
|
||||
dotnet_naming_rule.methods_must_be_pascal_case.style = pascal_case
|
||||
|
||||
dotnet_naming_symbols.methods.applicable_kinds = method
|
||||
|
||||
# 局部变量/参数 (Function Name/Local) -> camelCase (userName)
|
||||
dotnet_naming_rule.locals_must_be_camel_case.severity = warning
|
||||
dotnet_naming_rule.locals_must_be_camel_case.symbols = locals
|
||||
dotnet_naming_rule.locals_must_be_camel_case.style = camel_case
|
||||
|
||||
dotnet_naming_symbols.locals.applicable_kinds = local, parameter
|
||||
|
||||
dotnet_naming_style.camel_case.capitalization = camel_case
|
||||
|
|
@ -1,22 +1,24 @@
|
|||
{
|
||||
"recommendations": [
|
||||
// --- Python 核心与工具 ---
|
||||
"ms-python.python",
|
||||
"ms-python.black-formatter",
|
||||
"ms-python.flake8",
|
||||
|
||||
"ms-python.pylint", // 替换 Flake8,用于静态检查 (命名规范、错误)
|
||||
"ms-python.autopep8", // 替换 Black,用于代码格式化 (支持 Tab 缩进)
|
||||
// --- C++ 开发 ---
|
||||
"ms-vscode.cpptools",
|
||||
"ms-vscode.cpptools-extension-pack",
|
||||
|
||||
"dbaeumer.vscode-eslint",
|
||||
"esbenp.prettier-vscode",
|
||||
|
||||
// --- Java 开发 ---
|
||||
"vscjava.vscode-java-pack",
|
||||
"shengchen.vscode-checkstyle",
|
||||
|
||||
"editorconfig.editorconfig",
|
||||
"shengchen.vscode-checkstyle", // 配合 google_checks.xml 修改版可强制 Java 规范
|
||||
// --- 前端/通用 (JS/TS) ---
|
||||
"dbaeumer.vscode-eslint",
|
||||
"esbenp.prettier-vscode", // 注意:需配置 .prettierrc 以支持 Tab
|
||||
// --- 通用工具 ---
|
||||
"editorconfig.editorconfig", // 核心:统一控制所有语言的 Tab/缩进
|
||||
"eamodio.gitlens",
|
||||
"mhutchie.git-graph"
|
||||
],
|
||||
|
||||
"unwantedRecommendations": []
|
||||
"unwantedRecommendations": [
|
||||
"ms-python.black-formatter" // 明确列入黑名单,防止误装
|
||||
]
|
||||
}
|
||||
|
|
@ -1,36 +1,73 @@
|
|||
// .vscode/settings.json
|
||||
{
|
||||
// --- 全局核心风格配置 ---
|
||||
// 强制使用 Tab,严禁空格
|
||||
"editor.insertSpaces": false,
|
||||
"editor.tabSize": 4,
|
||||
"editor.detectIndentation": false, // 防止打开非标文件时被带偏
|
||||
// 行宽 100 字符辅助线
|
||||
"editor.rulers": [
|
||||
100
|
||||
],
|
||||
"editor.wordWrapColumn": 100,
|
||||
"editor.formatOnSave": true,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.organizeImports": "explicit"
|
||||
},
|
||||
|
||||
// --- Python 配置 (关键修改) ---
|
||||
"[python]": {
|
||||
"editor.defaultFormatter": "ms-python.black-formatter"
|
||||
// 替换 Black 为 Autopep8 (因为 Black 不支持 Tab)
|
||||
"editor.defaultFormatter": "ms-python.autopep8",
|
||||
"editor.insertSpaces": false,
|
||||
"editor.tabSize": 4
|
||||
},
|
||||
|
||||
// Autopep8 参数:强制 100 字符行宽,允许 Tab
|
||||
"autopep8.args": [
|
||||
"--max-line-length",
|
||||
"100",
|
||||
"--ignore",
|
||||
"E121" // 忽略部分缩进对齐警告
|
||||
],
|
||||
// Pylint 参数:指定配置文件路径
|
||||
"pylint.args": [
|
||||
"--rcfile=${workspaceFolder}/.pylintrc"
|
||||
],
|
||||
// Python 环境管理 (保留您原有的设置)
|
||||
"python-envs.defaultEnvManager": "ms-python.python:conda",
|
||||
"python-envs.defaultPackageManager": "ms-python.python:conda",
|
||||
"python-envs.pythonProjects": [],
|
||||
// --- C++ 配置 ---
|
||||
// 读取根目录的 .clang-format 文件 (Tab, K&B, BigCamel 等规则由此文件控制)
|
||||
"C_Cpp.clang_format_style": "file",
|
||||
|
||||
// --- JavaScript / TypeScript 配置 ---
|
||||
"[javascript]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.insertSpaces": false, // 覆盖 Prettier 默认的 Space
|
||||
"editor.tabSize": 4,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": "explicit"
|
||||
}
|
||||
},
|
||||
|
||||
"[typescript]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"editor.insertSpaces": false, // 覆盖 Prettier 默认的 Space
|
||||
"editor.tabSize": 4,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": "explicit"
|
||||
}
|
||||
},
|
||||
|
||||
// 注意:Prettier 通常优先读取 .prettierrc 文件。
|
||||
// 如果您有 .prettierrc,请务必在其中设置 "useTabs": true, "tabWidth": 4
|
||||
// --- JSON 配置 ---
|
||||
"[json]": {
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
|
||||
// --- Java 配置 ---
|
||||
"[java]": {
|
||||
"editor.defaultFormatter": "redhat.java" },
|
||||
"editor.defaultFormatter": "redhat.java",
|
||||
"editor.insertSpaces": false,
|
||||
"editor.tabSize": 4
|
||||
},
|
||||
// Java 格式化规则文件 (需要您确保这两个 XML 也是配置为 Tab 缩进)
|
||||
"java.format.settings.url": "java-style.xml",
|
||||
"java.format.settings.profile": "GoogleStyle",
|
||||
"java.checkstyle.enabled": true,
|
||||
|
|
|
|||
Loading…
Reference in New Issue