编制依据(施工规范标准)API服务

lingmin_package@163.com 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
base 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
config 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
data 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
docker 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
docs 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
script 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
service 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
tests 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
views 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
.gitignore 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
Dockerfile.dev 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
Dockerfile.prod 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
Dockerfile.test 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
Dockerfile.uat 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
README.md 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
__init__.py 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
app.py 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă
requirements.txt 7a0ffe557e feat:施工编制依据标准检索服务初始提交 2 săptămâni în urmă

README.md

本地规范检索服务

运行环境

  • WSL(适用于 Linux 的 Windows 子系统)Ubuntu。
  • Python(编程语言)3.12 或兼容版本。

安装

在项目根目录执行:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r standards_service/requirements.txt

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

启动

source .venv/bin/activate
uvicorn standards_service.app:app --host 127.0.0.1 --port 18765

默认读取项目根目录下的 归集617清洗.csv,默认把查询日志写入 standards_service/logs/query.jsonl

可以通过环境变量覆盖路径:

export STANDARDS_CSV_PATH=/path/to/standards.csv
export STANDARDS_LOG_PATH=/path/to/query.jsonl

调用

curl --noproxy '*' \
  -X POST http://127.0.0.1:18765/v1/search \
  -H 'Content-Type: application/json' \
  -d '{"keywords":["GB 50330","建筑边坡工程技术规范"]}'

每条查询返回 0~3 条候选规范。状态、实施日期和替代情况只作为结果返回,不参与匹配。

测试

source .venv/bin/activate
python -m pytest -q standards_service/tests

测试同时覆盖合成数据和项目中的真实规范清单。

并发和超时建议

当前服务支持多个 HTTP(网络请求)并发访问。匹配器在启动时加载本地规范库,查询阶段只读内存数据;查询日志在单进程内使用线程锁写入。

本地压测结果显示,单进程 Uvicorn(Python ASGI 服务)下:

  • 10 个并发请求,每个请求约 50 条关键词,可以在 5 秒内返回。
  • 10 个并发请求,每个请求 100 条关键词,建议调用端超时设置不低于 15 秒。

如果后续使用多进程部署,需要重新设计日志写入方式,避免多个进程同时写同一个 JSONL(逐行结构化日志)文件。