lixu
|
36f9c95fa7
|
Merge pull request 'feat(public): 首页改为极简谷歌风格' (#38) from devin/1782372352-home-mobile-center into main
CI / Go (api) (push) Successful in 1m10s
CI / Python (ingestion) (push) Successful in 19s
CI / Migrations (postgres) (push) Successful in 26s
|
2026-06-25 18:11:18 +08:00 |
|
lixu
|
53ade9eeea
|
Merge pull request 'feat(public): 首页搜索居中、移动端自适应,移除下方三卡片' (#37) from devin/1782372352-home-mobile-center into main
CI / Go (api) (push) Successful in 56s
CI / Python (ingestion) (push) Successful in 23s
CI / Migrations (postgres) (push) Successful in 27s
|
2026-06-25 15:28:54 +08:00 |
|
lixu
|
8c8df2b8a2
|
Merge pull request 'fix(admin): 回流接口校验/规范化 GTIN' (#36) from devin/1782352663-backflow-gtin-validate into main
CI / Go (api) (push) Successful in 1m7s
CI / Python (ingestion) (push) Successful in 24s
CI / Migrations (postgres) (push) Successful in 25s
|
2026-06-25 10:00:29 +08:00 |
|
lixu
|
3a5575f51b
|
Merge pull request 'feat(admin): 新增档案回流接口 POST /api/public/backflow' (#35) from devin/1782350840-backflow-api into main
CI / Go (api) (push) Successful in 53s
CI / Python (ingestion) (push) Successful in 28s
CI / Migrations (postgres) (push) Successful in 47s
|
2026-06-25 09:52:43 +08:00 |
|
lixu
|
856b81125c
|
Merge PR #34: public MSRP display
CI / Go (api) (push) Successful in 54s
CI / Python (ingestion) (push) Successful in 16s
CI / Migrations (postgres) (push) Successful in 26s
feat: embed MSRP in public product detail (hide zero amounts)
|
2026-06-25 08:59:21 +08:00 |
|
lixu
|
0da57a2fb3
|
Merge pull request 'feat(admin): 新增 /api/import/bypos 导入接口(修复采集器导入失败)' (#33) from devin/1782307670-bypos-import-endpoint into main
CI / Go (api) (push) Successful in 53s
CI / Python (ingestion) (push) Successful in 16s
CI / Migrations (postgres) (push) Successful in 28s
|
2026-06-24 21:33:02 +08:00 |
|
lixu
|
3aec0b84fe
|
Merge pull request 'feat(web+api): 贡献表单按 archive_kind 动态生成字段' (#32) from devin/1782295354-contribution-form-dynamic into main
CI / Go (api) (push) Successful in 55s
CI / Python (ingestion) (push) Successful in 32s
CI / Migrations (postgres) (push) Successful in 26s
|
2026-06-24 18:07:05 +08:00 |
|
lixu
|
998471f6df
|
Merge pull request 'feat: 新增药品(drug)商品档案格式' (#31) from devin/1782286467-drug-archive-kind into main
CI / Go (api) (push) Successful in 47s
CI / Python (ingestion) (push) Successful in 18s
CI / Migrations (postgres) (push) Successful in 27s
|
2026-06-24 15:39:07 +08:00 |
|
lixu
|
1d71617f71
|
Merge pull request 'chore(web): 添加微信域名校验文件' (#30) from devin/1782285002-wechat-domain-verify into main
CI / Go (api) (push) Successful in 51s
CI / Python (ingestion) (push) Successful in 30s
CI / Migrations (postgres) (push) Successful in 26s
|
2026-06-24 15:11:58 +08:00 |
|
lixu
|
f29696607a
|
Merge pull request 'feat(api): Redis read cache for product details and search (stage 0)' (#29) from devin/1782283345-redis-read-cache into main
CI / Go (api) (push) Successful in 50s
CI / Python (ingestion) (push) Successful in 37s
CI / Migrations (postgres) (push) Successful in 27s
|
2026-06-24 14:54:59 +08:00 |
|
lixu
|
20b9eb0fc9
|
Merge pull request 'ci: 修复 main 上 Python CI 历史失败(在 python3.12+node 容器内运行)' (#28) from devin/1782280936-fix-python-ci into main
CI / Go (api) (push) Successful in 54s
CI / Python (ingestion) (push) Successful in 23s
CI / Migrations (postgres) (push) Successful in 27s
|
2026-06-24 14:32:51 +08:00 |
|
lixu
|
936828abae
|
Merge pull request 'perf(search): 浏览路径部分复合索引 (0012)' (#27) from devin/1782279211-search-indexes into main
CI / Go (api) (push) Successful in 49s
CI / Python (ingestion) (push) Failing after 15s
CI / Migrations (postgres) (push) Successful in 31s
|
2026-06-24 13:35:50 +08:00 |
|
lixu
|
649fcc711c
|
Merge pull request 'docs: 可扩展性设计与路线图 (scalability roadmap)' (#26) from devin/1782278890-scalability-doc into main
CI / Go (api) (push) Successful in 52s
CI / Python (ingestion) (push) Failing after 16s
CI / Migrations (postgres) (push) Successful in 26s
|
2026-06-24 13:31:21 +08:00 |
|
lixu
|
ba36e3ff4c
|
Merge pull request '新增联系我们页面' (#25) from devin/1782277231-contact-us into main
CI / Go (api) (push) Failing after 32s
CI / Python (ingestion) (push) Failing after 31s
CI / Migrations (postgres) (push) Successful in 35s
|
2026-06-24 13:02:07 +08:00 |
|
lixu
|
53ce705572
|
Merge pull request '移除首页 API 调用说明入口' (#23) from devin/1782276245-home-remove-api-cta into main
CI / Go (api) (push) Failing after 16m4s
CI / Python (ingestion) (push) Failing after 17s
CI / Migrations (postgres) (push) Successful in 29s
|
2026-06-24 12:46:03 +08:00 |
|
lixu
|
dbbad274b6
|
Merge pull request 'feat(public-frontend): 公开前端 UI 视觉升级' (#22) from devin/1782270985-public-ui-redesign into main
CI / Go (api) (push) Successful in 55s
CI / Python (ingestion) (push) Failing after 14s
CI / Migrations (postgres) (push) Successful in 23s
|
2026-06-24 12:36:17 +08:00 |
|
lixu
|
8f9a03a929
|
Merge pull request 'feat(ingestion): import bypos-collector JSONL into goods' (#20) from devin/1782268418-bypos-importer into main
CI / Python (ingestion) (push) Successful in 11s
CI / Migrations (postgres) (push) Successful in 24s
CI / Go (api) (push) Successful in 49s
|
2026-06-24 10:35:27 +08:00 |
|
lixu
|
a2ef7319e9
|
Merge pull request 'chore(tools): add bypos-collector (条码批量采集器源码备份)' (#19) from devin/1782267629-add-bypos-collector into main
CI / Python (ingestion) (push) Successful in 11s
CI / Migrations (postgres) (push) Successful in 22s
CI / Go (api) (push) Successful in 48s
|
2026-06-24 10:27:15 +08:00 |
|
lixu
|
ddda61252b
|
Merge pull request '后台商品档案:点击表头排序' (#18) from devin/1782028836-product-sort into main
CI / Go (api) (push) Successful in 9s
CI / Python (ingestion) (push) Successful in 10s
CI / Migrations (postgres) (push) Successful in 15s
|
2026-06-21 16:01:56 +08:00 |
|
lixu
|
3178f8a85a
|
Merge pull request 'API 配额分级:免费累计 1000 次 + 公开注册自助领取更高配额密钥' (#17) from devin/1782026795-api-quota-registration into main
CI / Go (api) (push) Successful in 10s
CI / Python (ingestion) (push) Successful in 9s
CI / Migrations (postgres) (push) Successful in 17s
|
2026-06-21 15:28:59 +08:00 |
|
lixu
|
7f66aad779
|
Merge pull request 'feat: 可扩展档案模式框架 + 内置 3C(电子) 模式' (#16) from devin/1782022411-archive-kind-3c into main
CI / Go (api) (push) Successful in 12s
CI / Python (ingestion) (push) Successful in 10s
CI / Migrations (postgres) (push) Successful in 14s
|
2026-06-21 14:15:21 +08:00 |
|
lixu
|
98eb01f4ea
|
Merge pull request 'feat(admin): 商品编辑页 上一个/下一个 导航' (#15) from devin/1782021020-detail-prevnext into main
CI / Go (api) (push) Successful in 9s
CI / Python (ingestion) (push) Successful in 11s
CI / Migrations (postgres) (push) Successful in 14s
|
2026-06-21 13:51:19 +08:00 |
|
lixu
|
6e81a7eb36
|
Merge pull request 'feat(admin): 商品列表分页增强(每页数量+跳页)' (#14) from devin/1782012403-list-pagination into main
CI / Go (api) (push) Successful in 8s
CI / Python (ingestion) (push) Successful in 9s
CI / Migrations (postgres) (push) Successful in 14s
|
2026-06-21 11:27:41 +08:00 |
|
lixu
|
ed06d269c6
|
Merge pull request 'style(public): 页脚内容居中' (#13) from devin/1782012124-footer-center into main
CI / Go (api) (push) Successful in 9s
CI / Python (ingestion) (push) Successful in 9s
CI / Migrations (postgres) (push) Successful in 18s
|
2026-06-21 11:23:02 +08:00 |
|
lixu
|
afced01ba6
|
Merge pull request 'style(public): 更新页脚免责文案' (#12) from devin/1782011674-footer-text into main
CI / Go (api) (push) Successful in 9s
CI / Python (ingestion) (push) Successful in 10s
CI / Migrations (postgres) (push) Successful in 14s
|
2026-06-21 11:15:29 +08:00 |
|
lixu
|
01055ded02
|
Merge pull request 'style(admin): 后台各页容器统一居中' (#11) from devin/1782011126-admin-center into main
CI / Go (api) (push) Successful in 8s
CI / Python (ingestion) (push) Successful in 9s
CI / Migrations (postgres) (push) Successful in 15s
|
2026-06-21 11:06:31 +08:00 |
|
lixu
|
afdd26cb59
|
Merge pull request 'feat(public): 首页移除品牌/产地筛选,合格档案数移至页脚' (#10) from devin/1782010793-home-tweaks into main
CI / Go (api) (push) Successful in 8s
CI / Python (ingestion) (push) Successful in 10s
CI / Migrations (postgres) (push) Successful in 14s
|
2026-06-21 11:01:03 +08:00 |
|
lixu
|
f9360c15e3
|
Merge pull request 'feat(admin): 后台完善 — 分类管理 + 品牌管理 + 新建商品' (#9) from devin/1782002626-admin-category-management into main
CI / Go (api) (push) Successful in 10s
CI / Python (ingestion) (push) Successful in 9s
CI / Migrations (postgres) (push) Successful in 15s
feat(admin): 后台完善 — 分类/品牌管理、新建商品、数据概览、操作日志、批量操作 + 首页 (#9)
|
2026-06-21 10:00:38 +08:00 |
|
lixu
|
50124af833
|
Merge pull request 'feat(search+docs): 搜索升级(trgm 模糊 + 品牌/产地过滤 + 排序)+ 开发者文档 (M5b)' (#8) from devin/1781948300-m5b-search-docs into main
CI / Python (ingestion) (push) Successful in 10s
CI / Migrations (postgres) (push) Successful in 22s
CI / Go (api) (push) Successful in 44s
|
2026-06-20 17:40:07 +08:00 |
|
lixu
|
cf255e2380
|
Merge pull request 'feat(api): API Key + Redis 限流 + 用量统计 (M5a)' (#7) from devin/1781943842-m5a-api-key-ratelimit into main
CI / Python (ingestion) (push) Successful in 11s
CI / Migrations (postgres) (push) Successful in 23s
CI / Go (api) (push) Successful in 48s
|
2026-06-20 16:27:13 +08:00 |
|
lixu
|
7d7a8f1baf
|
Merge pull request 'feat(ingestion): harden OFF ingestion for bulk seeding' (#6) from devin/1781938549-ingestion-resilience into main
CI / Python (ingestion) (push) Successful in 11s
CI / Migrations (postgres) (push) Successful in 22s
CI / Go (api) (push) Successful in 36s
|
2026-06-20 15:54:07 +08:00 |
|
lixu
|
e34e007f28
|
Merge pull request 'feat(barcode): 多条码管理(迁移 + GTIN 校验 + 后台/公开 API + 后台 UI)' (#5) from devin/1781934649-multi-barcode into main
CI / Python (ingestion) (push) Successful in 11s
CI / Migrations (postgres) (push) Successful in 22s
CI / Go (api) (push) Successful in 37s
|
2026-06-20 15:53:43 +08:00 |
|
lixu
|
88d5766e8e
|
Merge pull request 'feat(admin): 运营后台(登录/查看/编辑补全)+ 写入API + 审计留痕' (#4) from devin/1781923221-admin-console into main
CI / Go (api) (push) Failing after 19s
CI / Python (ingestion) (push) Successful in 8s
CI / Migrations (postgres) (push) Failing after 16s
|
2026-06-20 13:42:09 +08:00 |
|
lixu
|
c272b2c5d7
|
Merge pull request 'chore(deploy): 生产 docker compose 部署配置' (#3) from devin/1781922421-prod-deploy into main
CI / Go (api) (push) Failing after 20s
CI / Python (ingestion) (push) Successful in 6s
CI / Migrations (postgres) (push) Failing after 19s
|
2026-06-20 10:32:22 +08:00 |
|
lixu
|
e3e5c7979c
|
ci: 修复 Gitea Actions 数据库连接(用服务名 postgres) (#2)
CI / Go (api) (push) Successful in 6s
CI / Python (ingestion) (push) Successful in 6s
CI / Migrations (postgres) (push) Successful in 16s
|
2026-06-19 17:47:41 +08:00 |
|
lixu
|
57537c880d
|
M4: ingestion management (#1)
CI / Go (api) (push) Failing after 14s
CI / Migrations (postgres) (push) Failing after 33s
CI / Python (ingestion) (push) Failing after 13m10s
Incremental OFF + GS1 supplement + dedup/conflict + quality scoring + scheduler
|
2026-06-08 17:40:26 +08:00 |
|
 lixuandDevin AI
|
e750501b44
|
feat(M3): 只读 API 端点实现
CI / Go (api) (push) Has been cancelled
CI / Python (ingestion) (push) Has been cancelled
CI / Migrations (postgres) (push) Has been cancelled
- store: pgx 只读数据访问层(productByGTIN/ByID/search/nutriments/msrp/brands/categories/source)
- handler: 真实查询替换 501 占位, 统一分页 + 错误信封, MSRP 带免责声明无购买入口
- main: pgxpool 连接池接线
- search: 名称模糊 + 分类子树过滤(ltree <@)
- 测试: healthz/pageParams 单测 + DB-backed handler 集成测试(无库自动跳过)
- CI: Go job 增加 postgres service + migrate up, 实跑 DB 测试
- 依赖: pgx v5.7.2 (固定到兼容 go1.23 的版本)
- 本地实跑: 8 个端点对真实 OFF 数据返回正确(barcode/search/nutriments/msrp/brands/categories/source/404)
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-06-08 07:14:18 +00:00 |
|
 lixuandDevin AI
|
766a573989
|
feat(M2): Open Food Facts 采集导入 ETL
- adapters/openfoodfacts.py: OFF API 适配器(限速+User-Agent) + JSONL/.gz dump 读取
- etl/transform.py: 纯函数转换(GTIN 校验/净含量解析+归一/营养 per_100g 双能量/过敏原添加剂清洗/关键词分类映射)
- etl/load.py: psycopg upsert(product/food_detail/product_image) + product_source 字段级溯源
- jobs/seed_off.py: CLI(--barcodes API / --dump 文件 / --limit)
- 测试: 13 个离线 transform 单测(fixture) + 可跳过的 DB 集成测试
- 依赖: 增加 psycopg[binary]
- 实跑: 从 OFF API 拉 5 个真实条码入本地 postgres 验证通过
- docs/etl-openfoodfacts.md: 流程/运行/字段映射
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-06-08 07:01:04 +00:00 |
|
 lixuandDevin AI
|
b0b816b0ee
|
feat(M1): 数据模型迁移 + GS1 GPC 食品分类 + 单位字典
- migrations/0001_init: 全部核心表(product/food_detail/product_msrp/product_source/brand/manufacturer/category/category_schema/unit/attribute_definition/product_image/merge_log) + 索引(gtin唯一/name trigram/JSONB GIN/category ltree/tsvector) + tsvector/updated_at 触发器
- 0002_seed_units: 单位字典(与 units.py 一致, 含中文别名) + 常用营养参数定义
- 0003_seed_categories: 食品品类骨架(GS1 GPC 映射 + 自建中文树, ltree) + 品类参数模板(营养基准 per_100g/ml)
- CI 增加 migrations job: 用 postgres service 跑 migrate up + down 验证可逆
- 本地实跑 up/down/re-up 全部通过
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-06-08 06:32:16 +00:00 |
|
 lixuandDevin AI
|
786b7d3721
|
feat(M0): 工程地基 - Go API + Python 采集骨架 + CI + 数据契约
- api/: Go(chi) 只读 API 骨架, /healthz + 版本化路由(占位), Dockerfile, 单测
- ingestion/: Python 采集/ETL 包骨架, units 单位归一化(纯函数+测试), adapter 协议
- docker-compose.yml: postgres + redis + minio + api
- .github/workflows/ci.yml: Go build/vet/test + Python ruff/pytest
- docs/data-contract.md(两端共享契约) + docs/disclaimer.md(不提供购买声明)
- migrations/ 占位(M1 起填充)
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-06-08 06:18:31 +00:00 |
|
lixu
|
729127661e
|
Initial commit
|
2026-06-08 12:09:52 +08:00 |
|