What's new
Every release ships with a short summary. Old versions are backfilled from git tags; the full history lives in CHANGELOG.md.
Release notes are machine-translated (AI); the Chinese original in CHANGELOG.md is authoritative.
v0.11.12026-11-11
- 三语首页说同一句话:英文 / 西语首页标题原来承诺的是「识别这是什么药」(像药品识别器),现在与中文同一个口径「查一个药名,看它在各国是什么」。「你得到的永远是候选集」从副标题第二句提成首屏独立一行(16px 正常字色),不再当注脚藏起来。
- 国家 / 地区筛选收进「只看某个国家/地区(可选)」:首页主路径回到「一个输入框」;
?country=CN这类深链会自动展开并显示「看这个药在中国叫什么」;顺带修掉「切换界面语言后这行标签不再翻译」的旧问题。 - 搜索框多了一个看得见的提交按钮(44×44,移动端键盘的「搜索」键同一条路径),桌面输入框右侧提示「按 / 聚焦」,有内容时提示自动隐去。
- 读屏与语义:主导航 / 更多 / 分区导航 / 搜索建议的无障碍名改成四语(中文与西语页不再中途冒出英文);成分页「按国家分组」块头由 h3 提到 h2,修掉 h1 → h3 的跳级。
- ATC 大类页状态徽章不再贴边:竖向内边距补足 3px(文字原来贴住圆角底色的上沿)。
- The three home pages now say the same thing: the English and Spanish home headlines used to promise "find out what a medicine really is" (like a pill identifier). They now match the Chinese wording: look up one medicine name and see what it is called in each country. "You always get a candidate set" moved out of the subtitle into its own 16px line on the first screen, instead of hiding as a footnote.
- The country/region filter folded into "Only one country/region (optional)": the home page main path is back to a single input box. Deep links such as
?country=CNexpand it automatically and show "See what this medicine is called in China". This also fixes the old bug where the label stopped being translated after switching interface language. - The search box has a visible submit button (44×44, the same path as the mobile keyboard's search key), with a desktop hint "Press / to focus" that hides as soon as you type.
- Screen readers and semantics: the accessible names of the primary navigation, the "more" menu, the section bar and the suggestion list are now translated in all four languages (Chinese and Spanish pages no longer switch to English mid-page); on ingredient pages the market block heading moved from h3 to h2, fixing the h1 to h3 skip.
- ATC class pages no longer have edge-crowded status badges: 3px vertical padding was added; the text used to sit flush against the top of the rounded background.
- Las tres páginas de inicio dicen lo mismo: los títulos en inglés y español prometían «descubre qué es realmente un medicamento» (como un identificador de pastillas). Ahora coinciden con el texto chino: busca un nombre de medicamento y mira cómo se llama en cada país. «Siempre obtienes un conjunto de candidatos» sale del subtítulo y pasa a su propia línea de 16px en la primera pantalla.
- El filtro de país/región se pliega en «Solo un país/región (opcional)»: la ruta principal de la página de inicio vuelve a ser una sola caja de búsqueda. Los enlaces directos como
?country=CNlo despliegan solos y muestran «Mira cómo se llama este medicamento en China». También se corrige el fallo antiguo por el que la etiqueta dejaba de traducirse al cambiar de idioma. - La caja de búsqueda tiene un botón de envío visible (44×44, la misma ruta que la tecla de búsqueda del teclado móvil), con la pista «Pulsa / para enfocar» en escritorio, que se oculta al escribir.
- Lectores de pantalla y semántica: los nombres accesibles de la navegación principal, el menú «más», la barra de secciones y la lista de sugerencias están ahora en los cuatro idiomas (las páginas en chino y español ya no cambian a inglés a mitad de página); en las páginas de ingredientes el título de cada bloque de mercado pasa de h3 a h2, corrigiendo el salto de h1 a h3.
- Las insignias de estado de las páginas de clase ATC ya no tocan el borde: se añadieron 3px de relleno vertical; el texto quedaba pegado al borde superior del fondo redondeado.
v0.11.02026-11-11
- 欧盟区域层(EU)上线:EC Union Register(CC BY 4.0)+ EMA 数据接入 2,095 个集中审批产品 / 2,138 条成分记录(在售 1,547、已撤市 406、状态未知 142),全库 479,193 产品;覆盖页多一行 EU,成分页可看「同名在欧盟层的集中审批记录」,搜索结果带 EU 标记。EU 层没有规格、剂型、包装,页面一律写「未收录」,并明说「授权有效 ≠ 各国在售」。
- 口径改成「10 国 + EU 区域」:覆盖页、About、首页文案统一;EU 是区域层(region='EU'、country 为空),不进国家统计,但进市场下拉与筛选。
- 不建 EU 名字页:647 个只在欧盟层出现的名字不生成单页(省 2.7 MB),从搜索结果直接点进成分页。
- 同名提醒(collision)905 → 925(+20):新增的 20 条来自欧盟层「同名不同成分」,仍是自动推导,不手工标注。
- EU 成分页说清「区域层」口径(四语):EU 市场块与并排表的 EU 列都写明「欧盟集中审批(EMA)— 欧盟层授权,不是某一国家的在售记录;欧盟登记不含规格、剂型、包装」,随界面语言在 en / es / zh / zh-Hant 之间切换。
- EU regional layer is live: EC Union Register (CC BY 4.0) plus EMA data add 2,095 centrally authorised products and 2,138 ingredient records (1,547 active, 406 withdrawn, 142 unknown status); the database now holds 479,193 products. Coverage gains an EU row, ingredient pages show EU central-authorisation records, and search results carry an EU tag. The EU layer has no strength, dosage form or pack size, so pages say "not recorded" and spell out that an EU authorisation is not a record of sale in any country.
- Coverage wording is now "10 countries + EU region" across the coverage page, About and the home page. EU is a regional layer (region='EU', country empty): it is excluded from country statistics but appears in the market selector and filters.
- No EU name pages: the 647 names that only exist at EU level get no page of their own (saving 2.7 MB); search results lead straight to the ingredient page.
- Same-name warnings (collision) 905 → 925 (+20): the 20 new ones come from EU-level same-name/different-ingredient cases, still derived automatically, never hand-labelled.
- EU pages now spell out what the regional layer means (four languages): the EU market block and the EU column of the side-by-side table both say 'EU centralised authorisation (EMA) — authorised at EU level, not a record of sale in any single country; the EU register carries no strength, dosage form or pack size', switching between en / es / zh / zh-Hant with the interface language.
- Capa regional de la UE en línea: el Union Register de la Comisión Europea (CC BY 4.0) y los datos de la EMA añaden 2,095 productos de autorización centralizada y 2,138 registros de componentes (1,547 autorizados, 406 retirados, 142 con estado desconocido); la base contiene ahora 479,193 productos. La cobertura gana una fila EU, las páginas de principio activo muestran los registros de autorización centralizada y los resultados de búsqueda llevan la etiqueta EU. La capa EU no tiene dosis, forma farmacéutica ni envase, así que las páginas dicen «no registrado» y aclaran que una autorización de la UE no es un registro de venta en ningún país.
- La cobertura pasa a «10 países + región UE» en la página de cobertura, About y la portada. La UE es una capa regional (region='EU', country vacío): no entra en las estadísticas por país, pero sí en el selector y los filtros de mercado.
- Sin páginas de nombre para la UE: los 647 nombres que solo existen a nivel UE no generan página propia (ahorra 2.7 MB); los resultados de búsqueda llevan directo a la página del principio activo.
- Avisos de mismo nombre (collision) 905 → 925 (+20): los 20 nuevos provienen de casos de mismo nombre con principio activo distinto en la capa UE; siguen derivándose automáticamente, nunca se etiquetan a mano.
- Las páginas de la UE explican qué es la capa regional (cuatro idiomas): el bloque de mercado UE y la columna UE de la tabla comparativa dicen «Autorización centralizada de la UE (EMA): autorizado a nivel de la UE, no es un registro de venta en ningún país concreto; el registro de la UE no incluye dosis, forma farmacéutica ni tamaño de envase», y cambian con el idioma de la interfaz (en / es / zh / zh-Hant).
v0.10.32026-11-10
- 桌面端内容带改成中间 2/3:≥1280 px 视口下正文固定占屏宽 66.7% 居中(1440→960、1920→1280、2560 封顶 1680),正文行长稳定 543 px(72ch),两侧留白对称;手机与平板(<1280)完全不变。页头/页脚同步与正文同宽。
- 成分页换掉矩阵,改成「按国家分组清单」:每个国家一块(
CN · 1,432 条 · 12 个规格),每行规格 · 剂型 · 释放+ 最多 2 个商品名 ++N,行尾也在 GB·US可点击跳到对应国家并高亮——「未收录」空格从页面上消失(旧页出现 73.3% 的空白格),行高从 109–307 px 降到 1440 下 54–56 px / 390 下 73 px;矩阵保留在?view=table,只对该成分跨市场记录较多的 789 页内嵌。 - 剂型数据修正 23,890 行(占全库 5.0%):泡腾剂成为独立类(948 行,129 个成分页从「片剂」改为「泡腾剂」)、15,570 行注射剂被误判成「液体」已纠正(成分页 2,311→2,809)、3,305 行粉剂从「液体」改回、1,880 行缓释/肠溶补上释放机制(ER +58 页 / DR +27 页)。副作用是
collision的「不同释放机制」提醒 837→905(+68)——这是过去被漏掉的真提醒,不是误报。 - 站点 121,319 文件 / 878.2 MB(837.5 MiB,比上一版小 54 MB / −5.8%);sitemap 63,366 URL;四语对齐。
- Desktop content band is now the middle two thirds: at ≥1280 px the content is a centred 66.7% of the viewport (1440→960, 1920→1280, capped at 1680 on 2560), prose lines stay at 543 px (72ch) and the left and right margins are symmetric; phones and tablets (<1280) are unchanged. Header and footer now share the same band.
- The ingredient page drops the matrix for a by-country list: one block per country (
CN · 1,432 records · 12 strengths), each row showingstrength · dose form · releaseplus at most 2 brand names and+N, with analso in GB·USlink at the end that jumps to that country and highlights it — the “not recorded” empty cells are gone (the old page was 73.3% empty cells) and row height drops from 109–307 px to 54–56 px at 1440 / 73 px at 390; the matrix stays behind?view=tableand is embedded only on the 789 pages where an ingredient has records in many markets. - Dose-form data fixed for 23,890 rows (5.0% of the database): effervescent forms become their own class (948 rows; 129 ingredient pages change from “tablet” to “effervescent”), 15,570 injection rows that were misclassified as “liquid” are corrected (ingredient pages 2,311→2,809), 3,305 powder rows move back from “liquid”, and 1,880 extended/enteric-release rows gain a release mechanism (ER +58 pages / DR +27 pages). Side effect:
collision“different release mechanism” notices go 837→905 (+68) — these are real notices that used to be missed, not false positives. - Site: 121,319 files / 878.2 MB (837.5 MiB, 54 MB / −5.8% smaller than the previous release); sitemap 63,366 URLs; four languages aligned.
- La banda de contenido de escritorio pasa a los dos tercios centrales: a ≥1280 px el contenido ocupa el 66,7 % del ancho de la ventana, centrado (1440→960, 1920→1280, tope de 1680 en 2560), las líneas de texto se mantienen en 543 px (72ch) y los márgenes izquierdo y derecho son simétricos; móviles y tabletas (<1280) no cambian. La cabecera y el pie usan la misma banda.
- La página de principio sustituye la matriz por una lista agrupada por país: un bloque por país (
CN · 1.432 registros · 12 presentaciones), cada fila conconcentración · forma · liberaciónmás como máximo 2 nombres comerciales y+N, y un enlacetambién en GB·USal final que salta a ese país y lo resalta — las celdas vacías «no consta» desaparecen (la página anterior era un 73,3 % de celdas vacías) y la altura de fila baja de 109–307 px a 54–56 px en 1440 / 73 px en 390; la matriz se mantiene en?view=tabley solo se incrusta en las 789 páginas con registros en muchos mercados. - Datos de forma farmacéutica corregidos en 23.890 filas (5,0 % de la base): las formas efervescentes pasan a ser clase propia (948 filas; 129 páginas de principio cambian de «comprimido» a «efervescente»), se corrigen 15.570 filas de inyectables mal clasificadas como «líquido» (páginas de principio 2.311→2.809), 3.305 filas de polvo vuelven desde «líquido» y 1.880 filas de liberación prolongada/entérica recuperan su mecanismo (ER +58 páginas / DR +27 páginas). Efecto secundario: los avisos de
collisionpor «mecanismo de liberación distinto» pasan de 837 a 905 (+68) — son avisos reales que antes se perdían, no falsos positivos. - Sitio: 121.319 archivos / 878,2 MB (837,5 MiB, 54 MB / −5,8 % menos que la versión anterior); sitemap 63.366 URL; cuatro idiomas alineados.
v0.10.22026-11-10
- 手机与弱网不再被偷跑 9.9 MB:全量索引(41.5 MB raw / 9.9 MB gz)的后台预取改为「静置 9 秒后才拉」,省流模式(
saveData)与 2G/3G 直接不拉;实测输入 2 个字后 3 秒内core.json请求 0 次,断网时已出的分片结果不再被错误框覆盖。 - 12 万长尾页首屏 −37.7%:界面字典按语言拆包,长尾页只加载当前语言(103 KB → 39.7 KB gz);非英文首页 143.9 KB → 105.8 KB,回到 110 KB 预算内。
- 类别与 ATC 码首查从 12.6 秒降到 ~0.03 秒:构建期预生成类别词表(23 KB)与 16 个大类切片,「退烧药 / 抗凝药 / 胃药 / skin medicine」这类口语词与繁简写法都能直接命中;类别结果排序改为按成分实有产品数,24 条类别用例 24/24、Top-1 17→24。
- 界面可读性(用户反馈逐条改):所有嵌套框体「框内颜色 ≠ 框外颜色」(页头、筛选区、类别 chip、次要按钮重排色阶);ATC 页的状态徽章改为按国家分组(
在售 US·GB·CN · 已撤市 TW),盐型独立成行、字号 14→16 px、宽屏不再挤在中间一条细列;成分页顶部加成分名悬浮条、手机端筛选区默认折叠;矩阵不再出现「三列全是未收录」的空行。 - CN 无商品名的产品改为显示厂家(126,716 条,占 CN 产品 87.4%);泡腾剂单独成类显示(948 条),不再混进「片剂」。四语同步;i18n 四语一致性与首屏可见性两道守卫已进 CI。
- 站点 121,316 文件 / 932.2 MB(889.0 MiB);sitemap 63,363 URL;四语对齐。类别索引 23 KB、ATC 成分表 214 KB 按需加载,首查不再等 41.5 MB 全量索引。首页首屏 gz:en 91.1 KB、es/zh/zh-Hant 92.2 KB(预算口径 ≤110 KB);含
terms.json的观察值 115.2–116.3 KB,v0.10.3 改为按需加载。
- Phones and slow networks no longer pull 9.9 MB in the background: the full index (41.5 MB raw / 9.9 MB gz) is now prefetched only after nine quiet seconds, and not at all in data-saver mode (
saveData) or on 2G/3G; measured: typing two characters triggers zerocore.jsonrequests within three seconds, and offline the shard results already on screen are no longer replaced by an error box. - First screen of the 120k long-tail pages −37.7%: the UI dictionary is split per language and long-tail pages load only the current one (103 KB → 39.7 KB gz); non-English homepages 143.9 KB → 105.8 KB, back within the 110 KB budget.
- Category and ATC-code first queries from 12.6 s to ~0.03 s: the build pre-generates a category word list (23 KB) and 16 category slices, so colloquial terms and traditional/simplified spellings (
退烧药/抗凝药/胃药/skin medicine) match directly; category results are now ordered by each ingredient's real product count — 24/24 category cases, Top-1 17→24. - Readability (each item from user feedback): every nested surface now has a fill different from its container (header, filter panel, category chips, secondary buttons re-stacked); ATC status badges are grouped by country (
active US·GB·CN · withdrawn TW), salt forms get their own line, text 14→16 px and wide screens no longer squeeze content into a narrow middle column; ingredient pages get a sticky ingredient-name bar and the mobile filter panel is collapsed by default; the matrix no longer shows rows whose visible columns are all “not recorded”. - CN products without a brand name now show the manufacturer (126,716 records, 87.4% of CN products); effervescent forms are shown as their own class (948 records) instead of being mixed into “tablet”. All four languages updated; the four-language i18n gate and the first-screen visibility gate are now part of CI.
- Site: 121,316 files / 932.2 MB (889.0 MiB); sitemap 63,363 URLs; four languages aligned. The 23 KB category index and 214 KB ATC ingredient table load on demand, so a first query no longer waits for the 41.5 MB full index. Homepage first-screen gz: en 91.1 KB, es/zh/zh-Hant 92.2 KB (budget measure ≤110 KB); counting
terms.json, the observed value is 115.2–116.3 KB, and v0.10.3 will load it on demand.
- Los móviles y las redes lentas ya no descargan 9,9 MB en segundo plano: el índice completo (41,5 MB raw / 9,9 MB gz) solo se precarga tras nueve segundos de calma, y nunca en modo ahorro de datos (
saveData) ni en 2G/3G; medido: escribir dos caracteres genera cero peticiones decore.jsonen tres segundos, y sin conexión los resultados de fragmento ya mostrados no se sustituyen por un cuadro de error. - Primera pantalla de las 120.000 páginas de cola −37,7 %: el diccionario de interfaz se divide por idioma y las páginas de cola cargan solo el actual (103 KB → 39,7 KB gz); portadas no inglesas 143,9 KB → 105,8 KB, de nuevo dentro del presupuesto de 110 KB.
- Primera búsqueda por categoría y por código ATC de 12,6 s a ~0,03 s: la compilación pregenera una lista de palabras de categoría (23 KB) y 16 fragmentos de categoría, de modo que los términos coloquiales y las grafías tradicionales/simplificadas (
退烧药/抗凝药/胃药/skin medicine) coinciden directamente; los resultados de categoría se ordenan por el número real de productos de cada principio — 24/24 casos de categoría, Top-1 17→24. - Legibilidad (punto por punto del comentario del usuario): cada superficie anidada tiene ahora un relleno distinto del de su contenedor (cabecera, panel de filtros, chips de categoría, botones secundarios reordenados); las insignias de estado ATC se agrupan por país (
activo US·GB·CN · retirado TW), las formas de sal van en su propia línea, el texto pasa de 14 a 16 px y las pantallas anchas ya no comprimen el contenido en una columna estrecha; las páginas de principio muestran una barra fija con el nombre y el panel de filtros móvil está plegado por defecto; la matriz ya no muestra filas cuyas columnas visibles son todas «no consta». - Los productos CN sin nombre comercial muestran ahora el fabricante (126.716 registros, 87,4 % de los productos CN); las formas efervescentes se muestran como clase propia (948 registros) en lugar de mezclarse con «comprimido». Los cuatro idiomas actualizados; la puerta i18n de cuatro idiomas y la de visibilidad en primera pantalla ya forman parte de la CI.
- Sitio: 121.316 archivos / 932,2 MB (889,0 MiB); sitemap 63.363 URL; cuatro idiomas alineados. El índice de categorías de 23 KB y la tabla de principios ATC de 214 KB se cargan bajo demanda, así que la primera consulta ya no espera al índice completo de 41,5 MB. Gzip de la primera pantalla de la portada: en 91,1 KB, es/zh/zh-Hant 92,2 KB (medida de presupuesto ≤110 KB); contando
terms.json, el valor observado es 115,2–116,3 KB, y v0.10.3 lo cargará bajo demanda.
v0.10.12026-11-10
- 修复 ATC / 大类页「中文名成分被误合并」:纯中文名成分在归一化时变成空串,互相覆盖后全被算成同一个成分——
/atc/J01.html里「地喹氯铵」一个条目下挂出几十个不相关抗生素名。现在各成分只出现在自己的 ATC 类目与成分页里,盐型归并口径不变。 - 首页体积回到预算内:四份首页(en / es / zh / zh-hant)只内联当前语言的界面字典(四语 128.8 KB → 单语 22–42 KB),首页 HTML 226.5 KB → 109–113 KB(−52%),回到 UI 规格上限(215.8 KB)以内;语言切换 16/16、
?lang=深链 4/4、localStorage 偏好 3/3 真浏览器验证 0 文本错配,搜索结果页 4/4 HTTP 200。 - 站点 121,293 文件 / 880.2 MB(839.4 MiB);sitemap 63,363 URL;四语对齐。
- Fixed Chinese-named ingredients being merged on ATC / category pages: ingredients with purely Chinese names normalised to an empty string, overwrote each other and were all counted as one substance — a single 地喹氯铵 (dequalinium) entry on
/atc/J01.htmllisted dozens of unrelated antibiotics. Each substance now appears only in its own ATC class and ingredient page; salt consolidation is unchanged. - Homepage size back within budget: the four homepages (en / es / zh / zh-hant) inline only the current language's UI dictionary (four languages 128.8 KB → one language 22–42 KB), homepage HTML 226.5 KB → 109–113 KB (−52%), back under the 215.8 KB UI limit; language switching 16/16,
?lang=deep links 4/4 and localStorage preference 3/3 verified in a real browser with 0 text mismatches, search result pages 4/4 HTTP 200. - Site: 121,293 files / 880.2 MB (839.4 MiB); sitemap 63,363 URLs; four languages aligned.
- Corregida la fusión de principios con nombre solo en chino en las páginas ATC / de categoría: los principios con nombre únicamente en chino se normalizaban a una cadena vacía, se sobrescribían entre sí y se contaban como un solo principio; una única entrada de 地喹氯铵 (dequalinio) en
/atc/J01.htmllistaba decenas de antibióticos sin relación. Ahora cada principio aparece solo en su clase ATC y en su página de principio; la consolidación de sales no cambia. - El tamaño de la portada vuelve al presupuesto: las cuatro portadas (en / es / zh / zh-hant) incluyen en línea solo el diccionario de interfaz del idioma actual (cuatro idiomas 128,8 KB → un idioma 22–42 KB), el HTML de portada pasa de 226,5 KB a 109–113 KB (−52 %), por debajo del límite de interfaz de 215,8 KB; cambio de idioma 16/16, enlaces directos
?lang=4/4 y preferencia en localStorage 3/3 verificados en navegador real con 0 desajustes de texto, páginas de resultados 4/4 HTTP 200. - Sitio: 121.293 archivos / 880,2 MB (839,4 MiB); sitemap 63.363 URL; cuatro idiomas alineados.
v0.10.02026-11-07
- 重做排版与可读性:字号从 11 档收敛到 5 档(12/14/16/20/24),正文 16px;次要文字对比度 5.2:1 → 7.67:1,分隔线 1.26:1 → 1.58:1;10–13px 的小字声明从 85 处降到 10 处。这次是设计层面的调整,不是加功能。
- 导航与首页重排:桌面导航收成 5 项(搜索 / 按类别 / 按市场 / 覆盖 / 关于),语言收进「🌐 中文 ▾」下拉,右上补「类别」入口;首页那十几行类别长条改成 8 个高频类别 2×4 + 「全部类别 →」;手机端底部 4 个入口常驻。
- 详情页层级理顺:成分页改成「身份 → 各国矩阵 → 也称 → 不可互换」;名字页补「同名不代表同一成分」提示;ATC 页四条提示合并成一条;覆盖页时间显示为日期并按市场排序;404 页补上导航与语言切换。
- 站点 121,280 文件 / 879.58 MB(838.8 MiB),比上一版小 6 MB;sitemap 63,351 URL;四语对齐。
Chinese original only — English/Spanish translation pending.
v0.9.82026-11-07
- 结果页先给答案:搜索后顶部出现「身份卡」——查询名对应哪个成分、规格、剂型、覆盖哪些市场、记录数,以及「查看成分页 / 复制标准名 / 报告错误」三个动作;H1 改为你查的名字。
- 长列表不再一屏铺完:结果默认 20 行,「显示更多」每次加 20;单个查询的页面体积从 1.86 MB 降到 210 KB(−89%)。
- 新导航:桌面 5 项(搜索 / 按类别 / 按市场 / 覆盖与新鲜度 / 关于)带下拉面板;手机底部 4 个常驻入口,语言切换常显;所有可点目标 ≥44px。
- 警示放到该在的位置:名字页新增「同名不代表同一成分」提示;成分页顺序改为「身份 → 各国矩阵 → 也称 → 不可互换」,筛选器收起不再挡内容。
- 站点 121,280 文件 / 885.56 MB(844.5 MiB);sitemap 63,351 URL;四语对齐。
Chinese original only — English/Spanish translation pending.
v0.9.72026-11-07
- 修复语言切换跳 404:首页与搜索结果页切换语言时会跳到域名根(GitHub 默认 404),现已修正为留在本站路径;术语表与覆盖页也纳入语言副本跳转。
- 合并 12 条重复成分记录:甘露醇、美沙拉嗪、硼酸、丝裂霉素等同一成分的重复条目并入英文主记录(产品数与组件数不变,仅去掉重复身份)。
- 成分页补「也称」:24 组同物异名(葡萄糖 / Dextrose、格列本脲 / Glyburide…)在成分页直接可见。
- 站点 121,280 文件 / 883.32 MB(842.4 MiB);sitemap 63,363 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.9.62026-11-07
- 长尾页更轻:77,058 个名字页去掉模板里重复的站点级结构化数据与说明文字,站点总量从 943.6 MB 降到 883.3 MB(省 57.5 MiB),页面标题、导航、正文与链接完全不变。
- 成分页多一行「也称」:葡萄糖 / Dextrose、格列本脲 / Glyburide 等 24 组同物异名直接显示在成分页(最多 5 个写法、可点),不再需要自己猜两边的叫法。
- 搜索能跨写法:搜 Dextrose 会给出 Glucose 的候选卡并标注「同物异名」,Glyburide、Bromelaína、ácido mefenámico 等同理;主名与别名都不翻译。
- 站点 121,292 文件 / 883.33 MB(842.4 MiB);sitemap 63,363 URL;体积余量回到 57.6 MiB;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.9.52026-10-31
- 导航补齐发现入口:覆盖与新鲜度页、ATC 与分类页进入顶层导航(四语),不用再靠页脚或记忆路径;长尾 12 万页保持轻量注入,不额外占体积。
- 首页更聚焦:搜索结果上移到搜索框正下方,删掉与三步引导重复的示例行,技术提示移到页底;新增「最近更新」最近三版入口。
- ATC 类目页可按剂型看跨市场事实:797 个 L4 类目新增「按剂型看跨市场明细」,展开后看各剂型在各市场的产品数;旁边固定提示「同一 ATC 类目只表示分类相近,不代表可互换」。
- 同名不同写法更容易查到:检索层接入同物异名(葡萄糖 / Dextrose、格列本脲 / Glyburide 等 24 组),三语评测 69/72(原 68)。
- 站点 121,292 文件 / 943.60 MB(899.89 MiB);sitemap 63,363 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.9.42026-10-30
- 覆盖与新鲜度页(四语):新增
/coverage.html及/es/、/zh/、/zh-hant/版本;10 个市场逐行显示产品数、成分映射率、规格覆盖率、最后同步、数据截止与已知缺口(HK 名称层、AU 无注册状态、CN 无商品名比例等),每个市场「覆盖多少、新不新、缺什么」一页看清。 - 成分名译名标注:非中文界面遇到只有中文主名的成分时,显示中文原名 + 「无英文译名」角标(西语同理:无西语译名),不再无标注混排;中文界面反向标「无中文名」。只用有出处的译名,不做机器翻译。
- 站点 121,290 文件 / 941.87 MB(898.2 MiB);sitemap 63,363 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.9.32026-10-30
- 中文界面的名字页 / 单包装页表头四语:市场 / 剂量 / 剂型 / 状态 / 厂家 / 来源等表头按当前语言显示,中文界面不再出现英文表头。
- 成分页标题与 ATC 类名更干净:成分页 H1 只显示成分名,来源 / 版本移到下方 badge;ATC 类名中英分隔为「降压药 · Blood-pressure medicines」,关闭「显示原文对照」时隐去英文部分。
- 厂家页与窄屏修复:厂家页列名「剂量」更正为「剂型」;修复西语 1280px 页头溢出与语言切换被裁切。
- 数据溯源字段:数据层新增来源 / 方法 / 置信度字段(界面暂不展示,About 有说明),为后续「这条数据哪来的、怎么算的」打底。
- 站点 121,286 文件 / 941.27 MB(897.7 MiB);sitemap 63,359 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.9.22026-10-30
- 性能大幅提升:移动端 Lighthouse 四个页面 Performance 99/99/100/100、LCP 0.9–1.7 s(v0.9.1 为 3.1–3.6 s),无障碍 / 最佳实践 / SEO 全 100;首屏关键资源与 i18n 改为页面 load 后注入,首屏更轻。
- 旧链接兼容:v0.9.0 因体积策略被裁掉的组合页全部生成
noindexstub(8,455 个),v0.9.0 的旧 URL 不再 404(内部链接与搜索行为不变)。 - 数据产品(只发派生层):新增
datapackage.json(coverage / market-summary / name-summary / substances 4 个聚合派生资源,含字段、行数、sha256、版本)+dataset.jsonld(schema.org Dataset)+checksums.txt+ 字段字典;About 增加入口链接。对外只发聚合派生层,8 个受限来源标non_redistributable、不重分发原始记录。 - 工程质量:新增最小 CI(GitHub Actions,push/PR 到 main 跑测试 + py_compile + 内容完整性检查),与本地发布门槛同一入口;发布仍只在本地。
- 站点 121,286 文件 / 941.27 MB(897.7 MiB);sitemap 63,359 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.9.12026-10-30
- 澳大利亚全量上线:AU 产品由 11,890 → 44,794(新增 32,904 个 TGA ARTG 2026-10-28 产品),页面与 About 标注 TGA ARTG 来源与数据日期;源未提供注册状态,统一显示「状态未确认」;Export Only 产品单独标注;无成分的产品标注「成分未收录(名称层)」,不臆造成分。
- 检索与移动端 UX 修复:搜「泰诺」不再混入不同成分的产品;全站计数口径统一;移动端结果首屏即可见、零结果提示更明确;矩阵筛选器可用、默认 3 列的行为加说明;搜索框 label、对比度、触控目标等无障碍问题修复。
- 搜索埋点修正:只在提交搜索时发送匿名事件,前缀合并、附带
lang与q_len;About 隐私说明四语同步更新。 - 性能基线(移动端):Lighthouse 性能 90–95、无障碍 / 最佳实践 / SEO 均 100;LCP 3.1–3.6 s 尚未达标,v0.9.2 继续优化;首搜文案按实测更新(约 1.05 MB raw / 0.16 MB gzip)。
- 站点 112,822 文件 / 936.97 MB(893.6 MiB);sitemap 63,359 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.9.02026-10-30
- 重量单位归一:同一成分的等价重量规格合并显示(如 0.12 g 与 120 mg 合并为 120 mg 一行,括号保留原写法),重量维度统一为 mg,矩阵不再把同一规格拆成多行。
- ATC / 常见大类 v2:1,154 个 ATC 类目补齐四语类名并逐语标注来源与许可(Wikipedia CC BY-SA 4.0 / Wikidata CC0 / 编辑译名);减肥药补入 GLP-1(并注明减重/降糖交集);感冒与过敏拆分(两页互相注明交叉);他汀排除已撤市成分;同码盐型按成分归并 + 超长列表改「查看更多」,不再硬截断。
- 成分页矩阵按需显示 + 横向滑动:默认最多 3 列(产品最多 / 当前语言 / 筛选器选中市场),其余市场用筛选器加入;矩阵可横向滑动、规格列固定,窄屏不溢出。
- 无商品名与厂家页:没有商品名的产品标注「无商品名」并显示厂家;厂家页全量覆盖 15,213 个(单产品厂家页注明未收录其他产品);单包装商品名 44,238 个可点进轻量页(不进 sitemap)。
- 香港(HK)市场上线:覆盖市场增至 10 个国家和地区;HK 提供名称/成分层数据 13,935 个产品,页面明示覆盖边界,About 增加 HK Drug Office 署名与数据截止日。
- 站点 116,883 文件 / 770.8 MB;sitemap 68,430 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.8.42026-10-29
- 无商品名产品去重:没有商品名的产品改为「通用名 + 剂型」合并显示,不再按包装重复成多行。
- 异常规格「规格待核」:解析异常或缺失的规格显示「规格待核」角标并排在最后,不删除数据。
- 长品牌名两行截断:超长品牌名最多两行 + 省略号,表格不再被撑开。
- 状态彩色角标:在售 / 停售 / 撤市 / 状态未知用彩色角标区分。
- 空值语义区分:未收录、不适用、未知分别用不同占位文案,不再一律显示「—」。
- CN 拉丁品牌中文小字:中国市场的拉丁字母品牌名旁以小字显示中文通用名,便于对照。
- 站点 62,217 文件 / 472.5 MB;sitemap 62,057 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.8.32026-10-29
- 矩阵常用剂量排序 + 空行隐藏:成分页矩阵按「跨国家记录数」排序常用规格(未公开的排最后); 空规格 / 空剂型行默认隐藏,表格更紧凑。
- 矩阵筛选器:按国家 / 剂型 / 释放机制 / 规格搜索过滤,带结果计数、URL 可分享、移动端抽屉与四语界面。
- 伪复方 base 归并:同一成分的不同盐型 / 规格不再被误当复方单独成页(同成分盐型不再误当复方); 复方页 10,942 → 10,284(-658),severe 同名不同成分 19,381 → 18,862;真复方(≥2 个不同成分)全部保留。
- 站点 62,217 文件 / 468.4 MB;sitemap 62,057 URL;四语 i18n 对齐。
Chinese original only — English/Spanish translation pending.
v0.8.22026-10-29
- 零结果埋点:新增
search0-*匿名零结果事件(去重 / 防抖 / ≤64 字),About 补四语隐私说明;deploy/analytics_report.py --search-weekly可出周报(Top 搜索词 / 零结果聚类 / 语言国家)。 - 修复:ATC 大类入口在中文界面仍显示英文类名——已按当前语言显示四语类名。
- UI:首页「三步看懂」引导卡位置上移、更醒目(用户截图要求)。
- UI:搜索后自动收起首页「按大类浏览」,减少结果页干扰。
- UI:修复页头导航/语言切换换行崩坏(中文 nav 单字竖排、logo 副标题与语言切换断行)。
- Zero-result tracking: a new anonymous
search0-*event (deduplicated, debounced, ≤64 characters), a four-language privacy note on About, anddeploy/analytics_report.py --search-weeklyfor a weekly report (top search terms / zero-result clusters / language and country). - Fix: ATC top-category entries still showed English names in the Chinese UI — category names now follow the current language in all four languages.
- UI: the home-page “three steps” guide card is moved up and made more prominent (per user screenshot).
- UI: the home-page “browse by category” section collapses automatically after a search, reducing clutter on the results page.
- UI: fixed broken header navigation/language-switcher wrapping (Chinese nav rendered one character per line; logo subtitle and language switcher broke onto separate lines).
- Registro de búsquedas sin resultados: nuevo evento anónimo
search0-*(deduplicado, con antirrebote, ≤64 caracteres), nota de privacidad en cuatro idiomas en About ydeploy/analytics_report.py --search-weeklypara un informe semanal (términos más buscados / agrupación de búsquedas sin resultados / idioma y país). - Corrección: los accesos a categorías principales ATC mostraban nombres en inglés en la interfaz china; ahora los nombres siguen el idioma actual en los cuatro idiomas.
- UI: la tarjeta «tres pasos» de la página de inicio se sube y se hace más visible (según captura del usuario).
- UI: la sección «explorar por categoría» de la página de inicio se contrae automáticamente tras buscar, reduciendo el ruido en la página de resultados.
- UI: se corrige el salto de línea roto en la navegación y el selector de idioma (la nav china se mostraba con un carácter por línea; el subtítulo del logo y el selector de idioma se partían en varias líneas).
v0.8.12026-10-29
- 站点双语对照:成分/商品名在「本市场原名」旁显示当前语言译名(默认 zh 536 / es 640 条),并带 来源徽章;双语对照数据版本 v2026-10-28.1。无译名时回退原名;品牌名永不翻译。
- 「显示原文对照」开关:检索结果/成分页可切换显示原始商品名,默认开启(zh-Hant 暂回退原名,后续补繁中译名)。
- 站点 62,880 文件 / 463.7 MB;四语界面;其余功能与 v0.8.0 一致(9 市场矩阵、ATC 类目、SG/HSA 署名)。
- Bilingual display on the site: ingredient/brand names show the current-language translation next to the original name in that market (defaults: zh 536 / es 640 entries) with a source badge; the bilingual dataset version is v2026-10-28.1; missing translations fall back to the original name and brand names are never translated.
- “Show original text” toggle: search results/ingredient pages can switch to show original brand names, on by default (zh-Hant temporarily falls back to original names; Traditional Chinese translations to follow).
- The site has 62,880 files / 463.7 MB, four-language UI, and otherwise matches v0.8.0 (9-market matrix, ATC categories, SG/HSA attribution).
- Visualización bilingüe: los nombres de principios/marcas muestran la traducción al idioma actual junto al nombre original de ese mercado (por defecto zh 536 / es 640 entradas) con una insignia de fuente; la versión del conjunto bilingüe es v2026-10-28.1; si falta traducción se usa el nombre original y las marcas nunca se traducen.
- Conmutador «Mostrar texto original»: los resultados de búsqueda y las páginas de principio pueden mostrar los nombres de marca originales, activado por defecto (zh-Hant usa temporalmente los nombres originales; las traducciones al chino tradicional llegarán después).
- El sitio tiene 62.880 archivos / 463,7 MB, interfaz en cuatro idiomas y, por lo demás, coincide con v0.8.0 (matriz de 9 mercados, categorías ATC, atribución SG/HSA).
v0.8.02026-10-29
- 新加坡市场上线:接入 HSA「Listing of Registered Therapeutic Products」(data.gov.sg),真实库已入库 5,511 个在册产品(hsa_sg,数据截止 2026-08-07,每 6 个月更新);全库产品 431,555。
- 四语国家列表 / 结果 chips / 成分页矩阵新增 SG 列;站点覆盖 9 个市场(US/GB/CA/AU/SG/CN/ES/MX/TW)。
- 矩阵 9 市场全显示(不再截断):en 不再舍 TW、zh 不再舍 MX;窄屏容器内横向滚动,页面不横向溢出。
- 来源署名:About 新增 HSA / 新加坡开放数据授权条款(SODL v1.0)署名与数据截止日;明确 「在册名单不代表在售」、商品名保留英文原文不翻译(四语)。
- 站点 62,878 文件 / 455.7 MB;sitemap 62,720 URL;四语 i18n 对齐。
- Singapore market launched: the HSA “Listing of Registered Therapeutic Products” (data.gov.sg) is integrated, with 5,511 registered products (hsa_sg, data cut-off 2026-08-07, updated every 6 months); the database now holds 431,555 products.
- Four-language country list / result chips / ingredient matrix gain an SG column; the site now covers 9 markets (US/GB/CA/AU/SG/CN/ES/MX/TW).
- All 9 markets shown in the matrix (no truncation): en no longer drops TW and zh no longer drops MX; narrow screens scroll horizontally inside the container without page overflow.
- Source attribution: About adds HSA / Singapore Open Data Licence (SODL v1.0) attribution and data cut-off; it states clearly that “registration is not the same as being on sale” and brand names keep their original English text (four languages).
- The site has 62,878 files / 455.7 MB, a sitemap of 62,720 URLs, and the four-language i18n is aligned.
- Lanzamiento del mercado de Singapur: se integra el «Listing of Registered Therapeutic Products» de HSA (data.gov.sg), con 5.511 productos registrados (hsa_sg, corte 2026-08-07, actualización semestral); la base contiene ahora 431.555 productos.
- La lista de países, los chips de resultados y la matriz de principios en cuatro idiomas añaden una columna SG; el sitio cubre ahora 9 mercados (US/GB/CA/AU/SG/CN/ES/MX/TW).
- La matriz muestra los 9 mercados (sin truncar): en ya no omite TW y zh ya no omite MX; las pantallas estrechas se desplazan horizontalmente dentro del contenedor sin desbordar la página.
- Atribución de fuentes: About añade la atribución HSA / Licencia de Datos Abiertos de Singapur (SODL v1.0) y la fecha de corte; se indica claramente que «estar registrado no equivale a estar a la venta» y las marcas conservan su texto original en inglés (cuatro idiomas).
- El sitio tiene 62.878 archivos / 455,7 MB, un sitemap de 62.720 URL y la i18n de los cuatro idiomas está alineada.
v0.7.12026-10-29
- ATC 类别浏览:新增 1,154 个 ATC 类目页(L1–L4,含层级路径)与 16 个常见大类入口;ATC 码搜索结果可直接进入 对应类目页,类目页列出该类别下的成分/商品名,并标注 WHO ATC / DDD 引用。
- 四语类名与类名搜索:类目名称 en / es / zh / zh-Hant 四语;搜索框支持类名(如「他汀类」「antibiotics」)直接命中类目页。
- 数据说明:L2–L4 多数类名为编辑/AI 译名,以 ATC 码为准,译名待专业校订;站点 61,547 文件 / 446.2 MB,sitemap 61,390 URL。
- ATC category browsing: 1,154 ATC category pages (L1–L4 with hierarchy paths) and 16 common top-category entry points; ATC-code search results link directly to the matching category page, which lists ingredients/brand names in that category and cites WHO ATC / DDD.
- Four-language category names and search: category names in en/es/zh/zh-Hant; the search box accepts category names (e.g. “他汀类”/“antibiotics”) and goes straight to the category page.
- Data note: most L2–L4 category names are editorial/AI translations — the ATC code is authoritative and names await professional review; the site has 61,547 files / 446.2 MB and a sitemap of 61,390 URLs.
- Navegación por categorías ATC: 1.154 páginas de categoría ATC (L1–L4 con rutas jerárquicas) y 16 accesos a categorías principales comunes; los resultados de búsqueda por código ATC enlazan directamente a la categoría, que lista principios/marcas y cita WHO ATC / DDD.
- Nombres de categoría y búsqueda en cuatro idiomas: nombres en en/es/zh/zh-Hant; el buscador acepta nombres de categoría (p. ej. «他汀类»/«antibiotics») y va directamente a la página de categoría.
- Nota de datos: la mayoría de los nombres de categoría L2–L4 son traducciones editoriales/IA — el código ATC es la referencia y los nombres están pendientes de revisión profesional; el sitio tiene 61.547 archivos / 446,2 MB y un sitemap de 61.390 URL.
v0.7.02026-10-29
- 台湾市场上线:接入衛福部食藥署 TFDA「全部藥品許可證資料集」(data.gov.tw #9122),真实库已入库 16,457 个在册产品;国家列表、结果国家 chips、成分页矩阵新增 TW 列(四语界面均可见)。
- 繁体中文界面启用:新增 /zh-hant/ 站点与 hreflang=zh-Hant,首页/检索/成分页/About/警示页全站繁体中文; TW 默认语言为 zh-Hant;首页显示台湾产品数 16,457。
- 来源署名:About 页新增 TFDA / 政府資料開放授權條款(OGDL v1.0)署名与数据截止日 2026-10-22(四语)。
- 台湾规格提示:TW 规格来自药名解析(非结构化字段),成分页对 TW 列标注「規格来自品名解析、置信度有限」。
- 站点 60,375 文件 / 436.3 MB;sitemap 60,219 URL;四语 i18n 全部对齐。
- Taiwan market launched: the TFDA “All drug permits” dataset (data.gov.tw #9122) is integrated, with 16,457 registered products written to the real database; the country list, result-country chips and ingredient-page matrix gain a TW column (visible in all four languages).
- Traditional Chinese UI enabled: a
/zh-hant/site withhreflang=zh-Hant; home, search, ingredient pages, About and warnings are fully Traditional Chinese; TW defaults to zh-Hant and the home page shows 16,457 Taiwanese products. - Source attribution: About adds TFDA / Government Open Data License (OGDL v1.0) attribution and a data cut-off of 2026-10-22 (four languages).
- Taiwan strength note: TW strengths come from brand-name parsing (unstructured fields), and the ingredient-page TW column is labelled “strength parsed from product name — limited confidence”.
- The site has 60,375 files / 436.3 MB, a sitemap of 60,219 URLs, and all four-language i18n is aligned.
- Lanzamiento del mercado de Taiwán: se integra el conjunto «Todos los permisos de medicamentos» de la TFDA (data.gov.tw #9122), con 16.457 productos registrados en la base real; la lista de países, los chips de país en resultados y la matriz de páginas de principio añaden una columna TW (visible en los cuatro idiomas).
- Interfaz en chino tradicional habilitada: sitio
/zh-hant/conhreflang=zh-Hant; inicio, búsqueda, páginas de principio, About y avisos totalmente en chino tradicional; TW usa zh-Hant por defecto y la página de inicio muestra 16.457 productos taiwaneses. - Atribución de fuentes: About añade la atribución TFDA / Licencia de Datos Abiertos del Gobierno (OGDL v1.0) y la fecha de corte 2026-10-22 (cuatro idiomas).
- Aviso sobre concentraciones de Taiwán: las concentraciones TW proceden del análisis del nombre del producto (campos no estructurados) y la columna TW de la página de principio se marca «concentración inferida del nombre — confianza limitada».
- El sitio tiene 60.375 archivos / 436,3 MB, un sitemap de 60.219 URL y la i18n de los cuatro idiomas está alineada.
v0.6.72026-10-29
- 成分页多国并排矩阵:成分页改为「行 = 规格 / 剂型 / 释放机制,列 = 国家(≤8)」的矩阵,单元格显示该国品牌 (最多 3 个 + N);无记录显示「未收录」;停售 / 撤市 / 状态未确认默认隐藏;表格加表线,移动端容器内横滚。
- 语言优先列序:en / es / zh / zh-Hant 首列分别为 US / ES / CN / TW,切换语言时列序随之重排。
- /warn 警示页分页:40 条改为 10 条/页,支持上一页 / 下一页 / 页码,?page=N 可分享、刷新保持,越界自动收敛到末页。
- 四语 i18n 336 keys 完全一致(矩阵与分页文案各 4 语);站点 60,375 文件 / 436.3 MB,sitemap 60,219 URL。
- 发布侧:deploy/publish.ps1 改为 gh-pages 增量提交(未变文件复用历史对象,只上传变化内容的 delta;-FullPush 可退回旧的全量流程)。
- Multi-country side-by-side matrix on ingredient pages: ingredient pages become a matrix of “rows = strength / dosage form / release mechanism, columns = countries (≤8)”, each cell showing that country’s brands (up to 3 + N); empty cells show “not indexed”; discontinued/withdrawn/unconfirmed-status products are hidden by default; tables get borders and scroll horizontally inside a container on mobile.
- Language-priority column order: the first column is US / ES / CN / TW for en / es / zh / zh-Hant respectively, and the order re-sorts when the language changes.
/warnpagination: the 40 warnings are paginated at 10 per page with previous/next/page-number controls;?page=Nis shareable and survives refresh, and out-of-range values clamp to the last page.- Four-language i18n is exactly aligned at 336 keys (matrix and pagination copy in each); the site has 60,375 files / 436.3 MB and a sitemap of 60,219 URLs.
- Release side:
deploy/publish.ps1now makes incremental gh-pages commits (unchanged files reuse historical objects and only deltas are uploaded;-FullPushreturns to the old full-upload flow).
- Matriz multipaís en páginas de principio: las páginas de principio pasan a una matriz de «filas = concentración / forma / mecanismo de liberación, columnas = países (≤8)», y cada celda muestra las marcas del país (hasta 3 + N); las celdas vacías indican «no indexado»; los productos retirados/descatalogados o de estado no confirmado se ocultan por defecto; las tablas llevan líneas y se desplazan horizontalmente dentro de un contenedor en móvil.
- Orden de columnas según idioma: la primera columna es US / ES / CN / TW para en / es / zh / zh-Hant respectivamente, y el orden se reajusta al cambiar de idioma.
- Paginación de
/warn: los 40 avisos se paginan de 10 en 10 con controles anterior/siguiente/número de página;?page=Nse puede compartir y se mantiene al refrescar; los valores fuera de rango se ajustan a la última página. - La i18n en cuatro idiomas está exactamente alineada con 336 claves (textos de matriz y paginación en cada una); el sitio tiene 60.375 archivos / 436,3 MB y un sitemap de 60.219 URL.
- Publicación:
deploy/publish.ps1hace ahora commits incrementales en gh-pages (los archivos sin cambios reutilizan objetos históricos y solo se suben los deltas;-FullPushvuelve al flujo de subida completa anterior).
v0.6.52026-10-29
- 英文/西语界面去中文残留:首页 logo 副标题、示例按钮、About 的昵称/类别词/已知缺口段落改为本语言 文案(如 Two frogs (liǎng zhī qīngwā)、sleeping pill (shuìqiányào)/pastilla para dormir);中文副标题只在 zh 界面显示。
- 首页示例按钮按语言本地化:en = Lipitor 20mg / Tylenol / Benadryl / Gaviscon;es = Paracetamol 500mg / Ibuprofeno 600mg / Omeprazol 20mg / Loratadina 10mg;zh 泰诺/两只青蛙;zh-Hant 泰諾/兩隻青蛙。
- 首搜提示更新:四语提示改为「首次只加载一小片索引(约 0.2 MB),完整索引后台补全」,不再出现旧「~6 MB」文案。
- 四语 i18n 328 keys 完全对齐;页面数与索引体积不变(57,848 文件 / 408.7 MB,sitemap 57,697 URL)。
- Chinese leftovers removed from EN/ES UI: the home-page logo subtitle, example buttons and About sections on nicknames/category terms/known gaps now use the page language (e.g. “Two frogs (liǎng zhī qīngwā)”, “sleeping pill (shuìqiányào)” / “pastilla para dormir”); the Chinese subtitle shows only in the zh UI.
- Home-page example buttons localized: en = Lipitor 20mg / Tylenol / Benadryl / Gaviscon; es = Paracetamol 500mg / Ibuprofeno 600mg / Omeprazol 20mg / Loratadina 10mg; zh = 泰诺/两只青蛙; zh-Hant = 泰諾/兩隻青蛙.
- First-search hint updated: in all four languages it now says “the first search loads only a small index slice (~0.2 MB); the full index is filled in the background”, replacing the old “~6 MB” copy.
- Four-language i18n is fully aligned at 328 keys; page count and index size are unchanged (57,848 files / 408.7 MB, sitemap 57,697 URLs).
- Se eliminan restos de chino en las interfaces EN/ES: el subtítulo del logo, los botones de ejemplo y las secciones de About sobre apodos, términos de categoría y lagunas conocidas usan ahora el idioma de la página (p. ej. «Two frogs (liǎng zhī qīngwā)», «sleeping pill (shuìqiányào)» / «pastilla para dormir»); el subtítulo chino solo aparece en la interfaz zh.
- Botones de ejemplo de la página de inicio localizados: en = Lipitor 20mg / Tylenol / Benadryl / Gaviscon; es = Paracetamol 500mg / Ibuprofeno 600mg / Omeprazol 20mg / Loratadina 10mg; zh = 泰诺/两只青蛙; zh-Hant = 泰諾/兩隻青蛙.
- Aviso de primera búsqueda actualizado: en los cuatro idiomas dice ahora «la primera búsqueda carga solo una pequeña porción del índice (~0,2 MB); el índice completo se completa en segundo plano», en lugar del antiguo «~6 MB».
- La i18n en cuatro idiomas está totalmente alineada con 328 claves; el número de páginas y el tamaño del índice no cambian (57.848 archivos / 408,7 MB, sitemap 57.697 URL).
v0.6.42026-10-29
- ATC 码搜索:搜索框支持
C07AB02(成分级)与C07/C07A(类目级)前缀, 结果直接列出对应成分/商品名并显示「ATC 前缀匹配」;普通药名不会被误判为 ATC。 - 术语表页(/glossary.html):INN / BAN / USAN / ATC / MAH / DIN / NDC / ARTG 等 13 条术语,中英西 + 繁体四语解释,导航入 sitemap。
- 键盘快捷键:
/聚焦搜索、Esc关闭建议/清空;中文输入法组合输入不受影响。 - 索引新增 ATC 字段(113,244 条目带码),core 27.8 MB;站点 57,697 URL。
- ATC-code search: the search box accepts
C07AB02(ingredient level) andC07/C07A(category-level) prefixes, listing matching ingredients/brand names with an “ATC prefix match” label; ordinary drug names are not mistaken for ATC codes. - Glossary page (
/glossary.html): 13 terms including INN / BAN / USAN / ATC / MAH / DIN / NDC / ARTG, explained in Chinese, English, Spanish and Traditional Chinese, linked from navigation and included in the sitemap. - Keyboard shortcuts:
/focuses search,Esccloses suggestions/clears input; Chinese IME composition input is unaffected. - The index gains an ATC field (113,244 entries with a code); core is 27.8 MB; the site has 57,697 URLs.
- Búsqueda por código ATC: el buscador acepta prefijos
C07AB02(nivel principio) yC07/C07A(nivel categoría), muestra los principios/marcas correspondientes con la etiqueta «coincidencia por prefijo ATC»; los nombres de medicamentos normales no se confunden con códigos ATC. - Glosario (
/glossary.html): 13 términos como INN / BAN / USAN / ATC / MAH / DIN / NDC / ARTG, explicados en chino, inglés, español y chino tradicional, enlazado desde la navegación e incluido en el sitemap. - Atajos de teclado:
/enfoca la búsqueda,Esccierra sugerencias o limpia la entrada; la composición con IME chino no se ve afectada. - El índice añade un campo ATC (113.244 entradas con código); core ocupa 27,8 MB; el sitio tiene 57.697 URL.
v0.6.32026-10-29
- 首屏 3 步引导(U1):首次访问首页显示「① 输入盒子上的名字 → ② 看它是什么成分 → ③ 切国家看别国叫什么」+ 真实示例,可关闭并记住;四语,防布局跳动。
- 结果顶部「各国叫法」横排(U2):能唯一确定单成分时,结果上方直接列出 US/GB/CN/ES/MX/AU/CA 的叫法(无收录显示「未收录」),点击切国家视图;多成分/多结果 自动隐藏,避免把不同药当成同一药。
- 界面标签本地化(U3):剂型(片剂/胶囊/注射剂…)、释放机制、单位、状态在 en/es/zh/繁体中文下统一显示;未收录的长尾值保留原文。
- First-screen 3-step guide (U1): first-time visitors to the home page see “① Type the name on the box → ② See what ingredient it is → ③ Switch country to see local names” with real examples; it can be dismissed and is remembered; available in four languages with no layout shift.
- “Local names” strip above results (U2): when a single ingredient is unambiguously identified, US/GB/CN/ES/MX/AU/CA names are listed above the results (“not indexed” where missing) and clicking switches the country view; hidden for multi-ingredient/multi-result cases so different drugs are not conflated.
- UI label localization (U3): dosage forms (tablet/capsule/injection…), release mechanisms, units and status are shown consistently in en/es/zh/zh-Hant; unindexed long-tail values keep their original text.
- Guía de 3 pasos en la pantalla inicial (U1): quien visita la página por primera vez ve «① Escribe el nombre de la caja → ② Mira qué principio es → ③ Cambia de país para ver cómo se llama» con ejemplos reales; se puede cerrar y se recuerda; en cuatro idiomas y sin saltos de diseño.
- Tira de «nombres locales» sobre los resultados (U2): cuando se identifica un único principio sin ambigüedad, los nombres de US/GB/CN/ES/MX/AU/CA se listan sobre los resultados («no indexado» si falta) y al pulsar se cambia la vista de país; se oculta en casos de varios principios o resultados para no confundir medicamentos distintos.
- Localización de etiquetas de interfaz (U3): las formas farmacéuticas (comprimido/cápsula/inyectable…), los mecanismos de liberación, las unidades y el estado se muestran de forma consistente en en/es/zh/zh-Hant; los valores largos no indexados conservan su texto original.
v0.6.22026-10-29
- 新增繁体中文(zh-Hant)界面:语言切换加「繁」,新增
/zh-hant/首页与 About / What's new / Confused / Warn 副本共 5 页;字典 247 键全覆盖,hreflang 增加zh-Hant,浏览器语言 zh-TW/HK/MO 自动识别。 - 繁体输入检索:内置 2,966 字对繁→简归一(OpenCC 子集),输入「泰諾」「對乙醯氨基酚」 等繁体同样能命中;显示仍按界面语言。
- 三语(en/es/zh)行为与文案不变;站点 +5 页、+3.2 MB。
- Traditional Chinese (zh-Hant) UI added: a “繁” language switch plus a
/zh-hant/home page and copies of About / What's new / Confused / Warn (5 pages); the dictionary covers all 247 keys,hreflangaddszh-Hant, and browser languages zh-TW/HK/MO are detected automatically. - Traditional-Chinese input search: a built-in 2,966-pair traditional→simplified normalization table (OpenCC subset) means queries such as 「泰諾」 or 「對乙醯氨基酚」 also match; display still follows the UI language.
- Three-language (en/es/zh) behaviour and copy are unchanged; the site gains 5 pages and 3.2 MB.
- Interfaz en chino tradicional (zh-Hant): se añade el selector «繁», una página de inicio
/zh-hant/y copias de About / What's new / Confused / Warn (5 páginas); el diccionario cubre las 247 claves,hreflangañadezh-Hanty se detectan automáticamente los idiomas zh-TW/HK/MO del navegador. - Búsqueda con entrada en tradicional: una tabla integrada de 2.966 pares tradicional→simplificado (subconjunto de OpenCC) permite que consultas como «泰諾» o «對乙醯氨基酚» también encuentren resultados; la visualización sigue el idioma de la interfaz.
- El comportamiento y los textos en en/es/zh no cambian; el sitio suma 5 páginas y 3,2 MB.
v0.6.12026-10-29
- 发布体积 −54.9 MB:停写冗余的
data/index.json(55.1 MB),core.json成为唯一索引;?legacy=1与解码失败回退统一走 core + decodeCore,结果与旧 index 逐字段对拍一致; GitHub Pages 单文件 50 MB 警告消失,发布更快。 - core 增加剂型字段:B7 导出的剂型列不再为空;core raw 27.1 MB / gzip 6.4 MB。
- 旧缓存客户端(≤v0.5.0)刷新前可能请求已删除的 index.json,刷新即恢复;
可用
WRITE_LEGACY_INDEX=1临时恢复双写。
- Release size −54.9 MB: the redundant
data/index.json(55.1 MB) is no longer written andcore.jsonbecomes the only index;?legacy=1and the decode fallback both use core + decodeCore, with results matching the old index field by field; the GitHub Pages single-file 50 MB warning is gone and publishing is faster. - Dosage-form field added to core: the form column exported by B7 is no longer empty; core is 27.1 MB raw / 6.4 MB gzip.
- Old cached clients (≤v0.5.0) may request the deleted
index.jsonuntil they refresh and recover after a refresh;WRITE_LEGACY_INDEX=1temporarily restores dual writes.
- Tamaño de publicación −54,9 MB: deja de escribirse el redundante
data/index.json(55,1 MB) ycore.jsonpasa a ser el único índice;?legacy=1y el fallback de decodificación usan core + decodeCore, con resultados idénticos campo a campo al índice anterior; desaparece el aviso de 50 MB por archivo de GitHub Pages y la publicación es más rápida. - Campo de forma farmacéutica en core: la columna de forma exportada por B7 ya no está vacía; core ocupa 27,1 MB sin comprimir / 6,4 MB gzip.
- Los clientes con caché antigua (≤v0.5.0) pueden pedir el
index.jsoneliminado hasta refrescar y se recuperan tras refrescar;WRITE_LEGACY_INDEX=1restaura temporalmente la doble escritura.
v0.6.02026-10-29
- 复方页跨市场对应:9,291 个组合页全部新增「其他国家同组合」区块——同成分集合 (exact 326 页)列出其他市场的品牌/产品数并链到对应页;近似组合(overlap 8)标 「相近但不相同,不可互换」;无同组合(none 4,509)明确「暂无同组合」并只给主成分链接, 标注「仅主成分相同,不是同一个复方」,不把复方当单方替代。
- 映射口径:页面成分集合与 CSV 归一签名两级反查;未匹配页面(4,448)显示中性提示,
宁可不显示也不误报;构建期读
data/combo_match_candidates.csv,零运行时开销。 - 三语新增
combo.cross_*9 键;组合页目录 +2.44 MB,站点总计约 450 MB。
- Cross-market combination-page matching: all 9,291 combination pages gain an “other countries with the same combination” block — exact same ingredient sets (326 pages) list brand/product counts in other markets with links; near matches (8) are labelled “similar but not identical — not interchangeable”; no-match pages (4,509) state “no same combination” and only link to the primary ingredient, marked “primary ingredient only — not the same combination”, never treating a combination as a single-ingredient substitute.
- Matching rules: two-level lookup by page ingredient set and normalized CSV signature; unmatched pages (4,448) show a neutral notice — showing nothing is preferred to false matches; the build reads
data/combo_match_candidates.csvwith zero runtime cost. - Added 9
combo.cross_*i18n keys in three languages; the combination-page directory grows by 2.44 MB, with the site totalling about 450 MB.
- Correspondencia entre mercados de páginas de combinación: las 9.291 páginas de combinación añaden un bloque «otros países con la misma combinación» — los conjuntos de principios exactamente iguales (326 páginas) muestran el número de marcas/productos en otros mercados con enlaces; las coincidencias aproximadas (8) se marcan «similares pero no idénticas — no intercambiables»; las páginas sin coincidencia (4.509) indican «sin combinación igual» y solo enlazan al principio principal, con la marca «solo el principio principal — no es la misma combinación», sin tratar una combinación como sustituto de un monofármaco.
- Criterio de correspondencia: doble búsqueda por conjunto de principios de la página y por firma normalizada del CSV; las páginas sin coincidencia (4.448) muestran un aviso neutro: es preferible no mostrar nada a dar falsos positivos; la compilación lee
data/combo_match_candidates.csvcon coste cero en ejecución. - Se añaden 9 claves
combo.cross_*en tres idiomas; el directorio de páginas de combinación crece 2,44 MB y el sitio totaliza unos 450 MB.
v0.5.62026-10-29
- 产品详情展开(A1):结果行可点「详情」按桶懒加载产品级明细(市场/包装/批准号/状态日期/ 释放机制/来源链接,最多 12 条),首次加载平均 ~180 KB gz,首屏不加载。
- 盐型 / 释放机制提示(A3):结果行出现盐型(base/succinate…)、释放(IR/ER…)与已发布
不可互换警示的徽章;警示链到
/warn#w-<id>,多盐型只做中性提示。 - 行级报告 + 导出(B6/B7):每行 ⚑ 可预填 GitHub issue 报告错误;结果工具条支持复制表格 与下载 CSV(BOM+CRLF,当前视图全部行)。
- What's new 修复:改为 CHANGELOG 全量 24 个版本为主列表,有译文渲染 en/es/zh 三块, 无译文显示中文并标「译文待补」;正文不再缺 v0.5.3–v0.5.5。
- 站点体积 57,836 文件 / 447.9 MB(详情桶 +46.9 MB raw / +9.3 MB gzip)。
- Product-detail expansion (A1): result rows have a “details” button that lazily loads product-level specifics per bucket (market/package/approval number/status date/release mechanism/source link, up to 12 entries); the first load averages ~180 KB gz and is not fetched on first paint.
- Salt-form / release-mechanism hints (A3): result rows show badges for salt form (base/succinate…), release (IR/ER…) and any published non-interchangeability warning; warnings link to
/warn#w-<id>and multiple salt forms only get a neutral notice. - Row-level reporting + export (B6/B7): each row has a ⚑ to pre-fill a GitHub issue for reporting errors; the result toolbar supports copying the table and downloading CSV (BOM+CRLF, all rows in the current view).
- What's new fix: it now uses all 24 CHANGELOG versions as the main list, rendering en/es/zh blocks where translations exist and Chinese with a “translation pending” label otherwise; v0.5.3–v0.5.5 no longer disappear from the page.
- Site size is 57,836 files / 447.9 MB (detail buckets +46.9 MB raw / +9.3 MB gzip).
- Despliegue de detalles de producto (A1): las filas de resultados tienen un botón «detalles» que carga de forma diferida los datos de producto por lote (mercado/envase/número de aprobación/fecha de estado/mecanismo de liberación/enlace de fuente, hasta 12 entradas); la primera carga promedia ~180 KB gz y no se descarga en el primer render.
- Avisos de forma salina / mecanismo de liberación (A3): las filas muestran insignias de forma salina (base/succinato…), liberación (IR/ER…) y cualquier aviso publicado de no intercambiabilidad; los avisos enlazan a
/warn#w-<id>y varias formas salinas solo reciben un aviso neutro. - Informe por fila + exportación (B6/B7): cada fila tiene un ⚑ para prerrellenar una incidencia de GitHub y reportar errores; la barra de resultados permite copiar la tabla y descargar CSV (BOM+CRLF, todas las filas de la vista actual).
- Corrección de What's new: usa las 24 versiones del CHANGELOG como lista principal, muestra los bloques en/es/zh cuando hay traducción y el chino con la etiqueta «traducción pendiente» si no; v0.5.3–v0.5.5 ya no desaparecen de la página.
- El sitio ocupa 57.836 archivos / 447,9 MB (los lotes de detalles suman +46,9 MB sin comprimir / +9,3 MB gzip).
v0.5.52026-10-29
- 中文界面显示中文成分名:检索索引新增
xz中文名数组(65,075 条,缺失逐段回退英文), 中文界面搜 Excedrin 会显示「对乙酰氨基酚 / 枸橼酸咖啡因」等中文名;自动完成同步。 - 页面元信息三语:首页/About/What's new/Confused/Warn 的 title、description、OG、
canonical、hreflang 按 en/es/zh 生成;新增
/es/、/zh/静态副本(head 本地化、链接相对)。 - What's new 三语:21 个版本要点按
data/release_notes_i18n.json渲染 en/es 块, 标注「AI 翻译,中文原文为准」;CHANGELOG 里的相对链接改为 GitHub 链接,消除 404。 - 跨市场身份合并落地:batch A+B 共合并 141 个成分(12,790 → 12,649),多市场成分增加; DB VACUUM 450 MB → 325 MB,补 2 个查询索引,外键检查清零。
- Chinese UI now shows Chinese ingredient names: the search index gains an
xzarray of Chinese names (65,075 entries; falls back to English segment by segment when missing). Searching Excedrin in the Chinese UI now shows names such as 「对乙酰氨基酚 / 枸橼酸咖啡因」; autocomplete is synced. - Trilingual page metadata: title, description, OG, canonical and hreflang for Home / About / What's new / Confused / Warn are generated per language (en/es/zh); new static copies under
/es/and/zh/(localized head, relative links). - Trilingual What's new: the 21 release summaries are rendered with en/es blocks from
data/release_notes_i18n.json, labelled “AI translation — Chinese text is authoritative”; relative links in CHANGELOG are rewritten to GitHub links, fixing 404s. - Cross-market identity merges landed: batches A+B merged 141 substances (12,790 → 12,649), increasing multi-market ingredients; DB VACUUM shrank the file from 450 MB to 325 MB, two query indexes were added and foreign-key checks are clean.
- La interfaz en chino muestra nombres de principios en chino: el índice de búsqueda añade un array
xzde nombres chinos (65.075 entradas; si falta, se recurre al inglés por segmentos). Buscar Excedrin en la interfaz china ahora muestra nombres como «对乙酰氨基酚 / 枸橼酸咖啡因»; el autocompletado está sincronizado. - Metadatos de página trilingües: title, description, OG, canonical y hreflang de Inicio / About / What's new / Confused / Warn se generan por idioma (en/es/zh); nuevas copias estáticas en
/es/y/zh/(head localizado, enlaces relativos). - What's new trilingüe: los resúmenes de las 21 versiones se muestran con bloques en/es desde
data/release_notes_i18n.json, marcados «traducción por IA; el texto chino es la referencia»; los enlaces relativos del CHANGELOG pasan a enlaces de GitHub y se eliminan los 404. - Fusiones de identidad entre mercados aplicadas: los lotes A+B fusionaron 141 principios (12.790 → 12.649), con más principios multi-mercado; VACUUM redujo la base de 450 MB a 325 MB, se añadieron dos índices de consulta y las comprobaciones de claves externas están limpias.
v0.5.42026-10-29
- 新增厂家页:按生产厂家(MAH)生成约 7,000 个厂家页(≥5 个产品的厂家;规范化去重、
Special Order 等占位不建页),列出覆盖国家、产品/品牌、成分与来源;结果行厂家名可点,
+N展开的每个厂家都有链接。 - 索引与导航:厂家链接字段入索引/分片,品牌→品牌页、成分→药物/组合页、厂家→厂家页 三类目标彻底分开;无页目标显示为不可点文本,不回退到无关页面。
- New manufacturer pages: about 7,000 pages by marketing-authorisation holder (≥5 products; normalized dedupe; placeholders such as “Special Order” get no page), listing covered countries, products/brands, ingredients and sources; manufacturer names in result rows are clickable and every holder shown under
+Nis linked. - Index and navigation: a manufacturer-link field was added to the index/shards; brand→brand page, ingredient→drug/combination page and manufacturer→manufacturer page are now fully separated; targets without a page render as non-clickable text instead of falling back to unrelated pages.
- Nuevas páginas de fabricante: unas 7.000 páginas por titular de autorización de comercialización (≥5 productos; deduplicación normalizada; marcadores como «Special Order» no generan página), con países cubiertos, productos/marcas, principios y fuentes; el nombre del fabricante en las filas es clicable y cada titular del
+Ntiene enlace. - Índice y navegación: se añade el campo de enlace de fabricante al índice/fragmentos; marca→página de marca, principio→página de medicamento/combinación y fabricante→página de fabricante quedan totalmente separados; los destinos sin página se muestran como texto no clicable, sin recaer en páginas no relacionadas.
v0.5.32026-10-29
- 品牌/成分点击目标修复:点品牌只进品牌页(没有品牌页时显示为不可点文本), 不再回退到第一个成分的药物页;点成分时单方进药物页、复方进新的「组合页」。 解决 Excedrin Extra Strength 点品牌跳到 acetaminophen 页的错位。
- 新增品牌页 / 组合页:品牌页 29,140(含新增 11,270 个 ≥2 包装的 trade 轻量页); 组合页 9,339(按成分集合,覆盖 37,514 条复方条目;单页超 200 条截断提示)。 站点规模 30k → 约 51k 页,发布/构建时间相应变长。
- 索引新增
cu组合页字段,core.json 与分片同步;检索结果与「展开全部品牌」都按新规则跳转, 抽样 88 个结果链接 0 404。
- Brand/ingredient click targets fixed: clicking a brand opens only the brand page (non-clickable text when none) and no longer falls back to the first ingredient's drug page; clicking an ingredient opens the drug page for single-ingredient products and the new combination page for combos. This fixes the Excedrin Extra Strength brand link jumping to the acetaminophen page.
- New brand and combination pages: 29,140 brand pages (including 11,270 new lightweight trade pages for ≥2 packs) and 9,339 combination pages (grouped by ingredient set, covering 37,514 combination entries; pages show a notice when truncated at 200). The site grows from about 30k to about 51k pages, so build/publish take longer.
- New
cucombination-page field in the index, synced to core.json and shards; search results and “show all brands” follow the new rules; 88 sampled result links had 0 404s.
- Destinos de clic de marca/principio corregidos: pulsar una marca abre solo la página de marca (texto no clicable si no existe) y ya no recae en la página del primer principio; pulsar un principio abre la página del medicamento (monofármaco) o la nueva página de combinación. Se corrige así que la marca Excedrin Extra Strength saltara a la página de paracetamol.
- Nuevas páginas de marca y de combinación: 29.140 páginas de marca (incluidas 11.270 nuevas páginas ligeras de marcas con ≥2 envases) y 9.339 páginas de combinación (agrupadas por conjunto de principios, cubriendo 37.514 entradas combinadas; se avisa cuando se trunca a 200). El sitio pasa de unas 30 mil a unas 51 mil páginas, con builds/publicaciones más lentos.
- Nuevo campo
cude página de combinación en el índice, sincronizado con core.json y los fragmentos; resultados de búsqueda y «mostrar todas las marcas» siguen las nuevas reglas; 88 enlaces de resultados muestreados: 0 404.
v0.5.22026-10-29
- 修复 /warn 与成分页警示在中文/西语下空白:语言块显隐把匹配项设为
display:'', 回落到 CSS 的display:none,导致三块全隐藏;改为显式display:block。 中文/西语现在能正常看到 40 条警示与成分页摘要,英文界面不变。
- Fix: /warn and ingredient-page warnings were blank in Chinese/Spanish — the language block set matched items to
display:'', which fell back to CSSdisplay:noneand hid all three blocks; it is now set explicitly todisplay:block. Chinese/Spanish show the 40 warnings and ingredient-page summaries again; the English UI is unchanged.
- Corrección: los avisos de /warn y de la página de principio activo aparecían en blanco en chino/español — el bloque de idioma asignaba
display:'', que recaía en el CSSdisplay:noney ocultaba los tres bloques; ahora se usadisplay:blockexplícito. Chino/español vuelven a mostrar los 40 avisos y los resúmenes de la página de principio activo; la interfaz en inglés no cambia.
v0.5.12026-10-27
- 首搜体积 3.78 MB → 约 254 KB(gz):检索索引改为「manifest + 分片」,输入后只拉
当前首字符所在的 1 个分片(
data/idx/shard-*.json);完整 core 只在后台补全/兜底时加载。?legacy=1仍可回退到整包索引;最终结果与 v0.5.0 一致。 - 西班牙复方补全:CIMA 里 208 条
multicomponente注册原先被整条跳过,本轮解析principiosActivos后恢复 102 个产品 / 932 个成分行(西语产品 25,293 → 25,395; 严格模式,只映射到库内已有成分)。 - /warn 西语正文:41 条警示补上
title_es/body_es,西语页面不再回退英文。 - 搜索评测集扩容:三语测试从 72 例扩到 300+ 例(错拼 / 拼音 / 简繁 / 复方 / 盐型 / 零结果), 作为后续搜索改造的固定门槛。
- First-search payload 3.78 MB → about 254 KB (gz): the search index is now a manifest plus shards, so only the shard for the first character is fetched on input; the full core loads in the background as a fallback.
?legacy=1still falls back to the single package; results match v0.5.0. - Spanish combination products completed: 208 CIMA
multicomponenteregistrations used to be skipped entirely; parsingprincipiosActivosrecovered 102 products / 932 ingredient rows (Spanish products 25,293 → 25,395; strict mode, existing ingredients only). - /warn Spanish body text:
title_es/body_esadded to 41 warnings; the Spanish page no longer falls back to English. - Search evaluation set expanded: trilingual tests grew from 72 to 300+ cases (typos, pinyin, simplified/traditional, combinations, salt forms, zero-result), as a fixed gate for future search changes.
- Carga de la primera búsqueda: 3,78 MB → unos 254 KB (gz): el índice ahora es un manifest con fragmentos, así que al escribir solo se baja el fragmento del primer carácter; el core completo se carga en segundo plano como respaldo.
?legacy=1vuelve al paquete único; los resultados coinciden con v0.5.0. - Combinaciones españolas completadas: 208 registros
multicomponentede CIMA se omitían por completo; al parsearprincipiosActivosse recuperaron 102 productos / 932 filas de componentes (productos en español 25.293 → 25.395; modo estricto, solo principios ya existentes). - Texto en español de /warn: se añadieron
title_es/body_esa 41 avisos; la página en español ya no recurre al inglés. - Set de evaluación de búsqueda ampliado: las pruebas trilingües pasan de 72 a más de 300 casos (erratas, pinyin, simplificado/tradicional, combinaciones, sales, resultado vacío), como umbral fijo para futuras mejoras de búsqueda.
v0.5.02026-10-27
- 搜索增强:在原有索引上派生匹配层(精确 / 前缀 / 中文 bigram / 拉丁 trigram + 编辑距离),
新增中文拼音与首字母、错拼容错、2 字短片段;难例 24/28 → 28/28,匹配 P50 94 ms → 1 ms,
首搜体积不变,
?legacy=1仍可回退旧逻辑。 - 界面 P0:国家选择器改成「看这个药在 X 叫什么」,该国没有时明确提示而不是静默回退; 结果顶部有解析条(名称/剂量/剂型/匹配方式)、输入自动完成、结果按成分聚合/品牌折叠/加载更多; 手机端表格转卡片、导航与页脚折行。
- 三语 P1:About / What's new / Confused / 404 全页中英西三语;About 接入逐源许可与署名 (WHO INN CC BY-NC-SA、ChEMBL CC BY-SA、datos.gob.mx CC BY 4.0、TGA © Commonwealth, CN 明确「未找到再发布许可」),并链 docs/许可清单.md。
- /warn 警示页:新增「同名不同药 / 不可互换」页面与成分页提示,只展示经 AI 核验来源的
dose_warning(不给用药建议)。 - 数据补全:ATC 覆盖改为双口径(全部 47.5%,药物实体 67.0%,ChEMBL 补 192 个);
英国 dm+d 恢复盐型 15,083 个组件(2.0% → 25.0%);墨西哥浓度 34.1% → 35.2%(per_volume +125);
WHO INN 西语合并 +3;中文互联网俗名 1,034 条入
drug_term,同时清除毒品/娱乐性用药黑话 337 行。 - 数据层 v0.4 上页面:
salt_code/strength_basis/dose_warning迁移到真实库, 盐型规范化 1,555 个 variant。
- Search upgrade: a matching layer on top of the index (exact / prefix / Chinese bigram / Latin trigram + edit distance), plus pinyin and initials, typo tolerance and 2-character short fragments; hard cases 24/28 → 28/28, match P50 94 ms → 1 ms, same first-search size,
?legacy=1still available. - UI P0: the country selector now answers "what is this drug called in X?" and says so explicitly when a market has no record instead of silently falling back; results gain a parse bar (name/dose/form/match type), autocomplete, grouping by ingredient, brand folding and load-more; mobile tables become cards and nav/footer wrap.
- Trilingual P1: About / What's new / Confused / 404 pages are fully en/zh/es; About lists per-source licences and attribution (WHO INN CC BY-NC-SA, ChEMBL CC BY-SA, datos.gob.mx CC BY 4.0, TGA © Commonwealth; China explicitly "no re-publication licence found") and links docs/许可清单.md.
- /warn page: new "same name, different drug / not interchangeable" page plus ingredient-page notices, showing only AI-verified
dose_warningsources (no medical advice). - Data completion: ATC coverage reported two ways (47.5% overall, 67.0% of drug entities, ChEMBL added 192); UK dm+d salt forms recovered for 15,083 components (2.0% → 25.0%); Mexico strength 34.1% → 35.2% (per_volume +125); WHO INN Spanish merges +3; 1,034 Chinese internet slang names added to
drug_termand 337 drug/recreational slang rows removed. - Data layer v0.4 on pages:
salt_code/strength_basis/dose_warningmigrated to the production DB; salt forms normalized for 1,555 variants.
- Mejora de búsqueda: capa de coincidencia sobre el índice (exacta / prefijo / bigrama chino / trigrama latino + distancia de edición), más pinyin e iniciales, tolerancia a erratas y fragmentos de 2 caracteres; casos difíciles 24/28 → 28/28, coincidencia P50 94 ms → 1 ms, mismo tamaño de primera búsqueda,
?legacy=1disponible. - Interfaz P0: el selector de país ahora responde "¿cómo se llama este medicamento en X?" y lo dice si un mercado no tiene registro, sin volver en silencio; los resultados tienen barra de análisis (nombre/dosis/forma/tipo de coincidencia), autocompletado, agrupación por principio, plegado de marcas y cargar más; en móvil las tablas pasan a tarjetas y la navegación/pie se ajustan.
- Trilingüe P1: About / What's new / Confused / 404 totalmente en en/zh/es; About incluye licencias y atribución por fuente (WHO INN CC BY-NC-SA, ChEMBL CC BY-SA, datos.gob.mx CC BY 4.0, TGA © Commonwealth; China indica explícitamente "no se encontró licencia de republicación") y enlaza docs/许可清单.md.
- Página /warn: nueva página "mismo nombre, otro medicamento / no intercambiables" y avisos en la página de principio, mostrando solo
dose_warningcon fuente verificada por IA (sin consejo médico). - Datos completados: cobertura ATC con dos medidas (47,5% total, 67,0% de entidades, ChEMBL +192); dm+d del Reino Unido recuperó sales en 15.083 componentes (2,0% → 25,0%); concentración en México 34,1% → 35,2% (per_volume +125); WHO INN fusiones en español +3; 1.034 nombres coloquiales chinos añadidos a
drug_termy 337 filas de jerga de drogas/ recreativa eliminadas. - Capa de datos v0.4 en páginas:
salt_code/strength_basis/dose_warningmigrados a la base de producción; formas de sal normalizadas en 1.555 variantes.
v0.4.12026-10-26
- 访问统计上线(只后台看,不公开):接入 GoatCounter(cookieless、不记录个人数据、 不用于广告)。后台可看 PV / 独立访客趋势、来源网站、国家/地区、浏览器与屏幕尺寸; 页面不显示任何计数。
- 站内行为事件(匿名):记录搜索词(
search-<词>)、结果点击(click-result)、 报告入口(click-report)、更新日志(click-whatsnew)、国家切换(country-XX), 用来改进检索。 - 隐私说明:About 页新增中/英/西三语「访问统计」段落并链 GoatCounter 隐私政策;
未配置
GOATCOUNTER_CODE时不注入统计脚本,站点行为不变(配置见docs/访问统计.md)。
- Visit analytics live (admin-only, not public): GoatCounter integrated (cookieless, no personal data, not used for ads). Admins see PV / unique visitors, referrers, countries, browsers and screen sizes; no counters are shown on pages.
- Anonymous on-site events: records search terms (
search-<term>), result clicks (click-result), report link (click-report), what's-new (click-whatsnew) and country switches (country-XX) to improve search. - Privacy note: About page gains a trilingual "visit analytics" section linking GoatCounter's privacy policy; without
GOATCOUNTER_CODEno script is injected and the site behaves as before (seedocs/访问统计.md).
- Analítica de visitas activa (solo administración, no pública): integración con GoatCounter (sin cookies, sin datos personales, no para publicidad). La administración ve PV/visitantes únicos, referentes, países, navegadores y tamaños de pantalla; las páginas no muestran contadores.
- Eventos anónimos en el sitio: registra términos de búsqueda (
search-<término>), clics en resultados (click-result), enlace de reporte (click-report), novedades (click-whatsnew) y cambios de país (country-XX) para mejorar la búsqueda. - Nota de privacidad: About añade una sección trilingüe de "analítica de visitas" con enlace a la política de privacidad de GoatCounter; sin
GOATCOUNTER_CODEno se inyecta script y el sitio no cambia (verdocs/访问统计.md).
v0.4.02026-10-26
- 中文 / 西语名称身份合并:350 个「只有中文名」的 CN 专属成分并入英文 INN (3,355 个 CN 产品,占 CN 产品 23.1%);139 个 ES/MX 西语成分并入英文 INN (621 个产品,其中 131 条让西语产品连上英/加/澳/美市场的同一成分)。 中 / 英 / 西三种语言的同一成分现在落到同一身份卡与国家视图。
- 墨西哥浓度 28.7% → 34.1%:人工审核 963 条回填候选后,只写严格规则 PASS 的 584 条(3,707 / 10,878 有浓度);每条都带 CC-BY-4.0 数据集的出处。
- 首搜体积 6.06 MB → 约 3.86 MB:索引改为列式 + 字典编码(34.8 MB → 15.3 MB raw,
gzip −36.6%),解码后的检索结果与旧版逐字节一致,
?legacy=1可一键回退。 - 三语界面 P0 修复:APP / 药品页受控词、加载与错误提示、语言切换持久化、hreflang
全部三语化;修了从
/es/、/zh/直入后点导航丢语言的问题。 - 数据层 v0.4 就绪(未上页面):schema 增加
salt_code/strength_basis/dose_warning表,盐名规范化与 41 条人工策展预警种子已备好;页面接线下一版做。 - 新增报告:三语检索测试(72 例 / 354 条查询)、MX 审核、CN/ES 映射、
索引 P1、D2/D3 数据层、i18n 审计与 P0 修复,均在
reports/。
- Chinese / Spanish name identity merged: 350 CN-only substances that had only a Chinese name merged into English INNs (3,355 CN products, 23.1% of CN products); 139 ES/MX Spanish substances merged into English INNs (621 products, 131 of them now link Spanish products to the same ingredient in UK/CA/AU/US markets). The same ingredient now lands on one identity card and country view across zh/en/es.
- Mexico strength 28.7% → 34.1%: after reviewing 963 backfill candidates, only 584 strict-rule PASS rows were written (3,707 / 10,878 with strength), each citing the CC-BY-4.0 dataset source.
- First-search payload 6.06 MB → about 3.86 MB: index moved to columnar + dictionary encoding (34.8 MB → 15.3 MB raw, gzip −36.6%); decoded results are byte-identical to the old version,
?legacy=1is a one-click fallback. - Trilingual UI P0 fixes: app/drug-page controlled terms, loading and error messages, language-switch persistence and hreflang all trilingual; fixed losing the language after entering directly via
/es/or/zh/and then using navigation. - Data layer v0.4 ready (not yet on pages): schema adds
salt_code/strength_basis/dose_warning; salt-name normalization and 41 curated warning seeds ready; page wiring comes next version. - New reports: trilingual search tests (72 cases / 354 queries), MX review, CN/ES mapping, index P1, D2/D3 data layer, i18n audit and P0 fixes — all under
reports/.
- Identidad de nombres chino/español fusionada: 350 principios exclusivos de CN con solo nombre chino se fusionaron en INN ingleses (3.355 productos CN, 23,1% de los productos CN); 139 principios españoles ES/MX se fusionaron en INN ingleses (621 productos; 131 enlazan productos en español con el mismo principio en mercados GB/CA/AU/US). El mismo principio ahora cae en una sola ficha y vista de país en zh/en/es.
- Concentración en México 28,7% → 34,1%: tras revisar 963 candidatos de relleno, solo se escribieron 584 filas con regla estricta PASS (3.707 / 10.878 con concentración), cada una citando la fuente del conjunto CC-BY-4.0.
- Carga de la primera búsqueda 6,06 MB → unos 3,86 MB: índice columnar + codificación de diccionario (34,8 MB → 15,3 MB en bruto, gzip −36,6%); los resultados decodificados son idénticos byte a byte a la versión anterior,
?legacy=1permite volver con un clic. - Correcciones P0 de interfaz trilingüe: términos controlados de la app y la página de medicamento, mensajes de carga y error, persistencia del idioma y hreflang en los tres idiomas; corregido perder el idioma al entrar directamente por
/es/o/zh/y luego navegar. - Capa de datos v0.4 lista (aún no en páginas): el esquema añade
salt_code/strength_basis/dose_warning; normalización de nombres de sal y 41 semillas de avisos curadas listas; la conexión con las páginas llega en la próxima versión. - Nuevos informes: pruebas trilingües de búsqueda (72 casos / 354 consultas), revisión MX, mapeo CN/ES, índice P1, capa de datos D2/D3, auditoría i18n y correcciones P0, todos en
reports/.
v0.3.52026-10-26
- 修:中文 GLP-1 名字搜不到海外产品。中文通用名「替尔泊肽 / 司美格鲁肽 / 利拉鲁肽 /
度拉糖肽 / 艾塞那肽 / 利司那肽」原先各自落成 CN 专属成分(如
cn-ef1fa3539d), 搜「替尔泊肽」只出中国的注射液;现在并入英文 INN(tirzepatide / semaglutide …), CN 产品出现在成分身份卡与「美国」等国家视图里——搜「替尔泊肽」选美国会给出 Mounjaro / Zepbound。这 6 个中文名也加进了 CN→EN 映射表,重跑中国入库不会再拆开。 - 数据:合并 6 个重复成分(13,288 → 13,282 个成分;46 个组件改挂), ATC 覆盖 47.7%(6,339 / 13,282)。
- Fix: Chinese GLP-1 names could not find overseas products. The Chinese generic names 替尔泊肽 / 司美格鲁肽 / 利拉鲁肽 / 度拉糖肽 / 艾塞那肽 / 利司那肽 each used to become CN-only substances (e.g.
cn-ef1fa3539d), so searching 替尔泊肽 returned only Chinese injections; they now map to English INNs (tirzepatide / semaglutide …), and CN products appear on the ingredient identity card and country views such as the US — searching 替尔泊肽 and choosing the US now returns Mounjaro / Zepbound. These 6 names were added to the CN→EN map so a China re-ingest will not split them again. - Data: 6 duplicate substances merged (13,288 → 13,282 substances; 46 components re-pointed); ATC coverage 47.7% (6,339 / 13,282).
- Corrección: los nombres chinos de GLP-1 no encontraban productos en el extranjero. Los nombres genéricos chinos 替尔泊肽 / 司美格鲁肽 / 利拉鲁肽 / 度拉糖肽 / 艾塞那肽 / 利司那肽 creaban principios exclusivos de CN (p. ej.
cn-ef1fa3539d), así que buscar 替尔泊肽 solo devolvía inyectables chinos; ahora se mapean a INN ingleses (tirzepatida / semaglutida …) y los productos CN aparecen en la ficha del principio y en vistas de país como EE. UU. — buscar 替尔泊肽 y elegir EE. UU. devuelve Mounjaro / Zepbound. Los 6 nombres se añadieron al mapa CN→EN para que una recarga de China no los vuelva a separar. - Datos: 6 principios duplicados fusionados (13.288 → 13.282 principios; 46 componentes reasignados); cobertura ATC 47,7% (6.339 / 13.282).
v0.3.42026-10-26
- 首屏从约 6.08 MB 降到约 17 KB:检索索引改为懒加载——页面打开只下 HTML/CSS/JS;
首次输入、聚焦搜索框、点示例或带
?q=深链时才拉约 6 MB 索引,并显示中英提示。 加载后的结果与 v0.3.3 逐字节一致(18 个查询 + 3 个国家视图对拍)。?legacy=1一键回到旧行为。 - ATC 覆盖 43.3% → 47.7%:用 Wikidata P267(CC0,About 页已署名)给 594 个原来没有 ATC 的成分补上编码与名称;多码歧义 127 个跳过。
- 新增调研/实现报告:
reports/index-perf-plan.md(拆片/压缩路线)、reports/lazyload-implementation.md、reports/data-depth-20261026.md、reports/dose-mapping-plan.md、reports/mx-atc-implementation.md。 MX 浓度回填 ETL 已就绪(dry-run +963 产品,28.7%→37.6%),等 50 条人工抽核后再启用。
- First screen from about 6.08 MB down to about 17 KB: the index now lazy-loads — opening the page fetches only HTML/CSS/JS; the ~6 MB index is fetched on first input, search-box focus, example click or a
?q=deep link, with a bilingual hint. Results after loading are byte-identical to v0.3.3 (18 queries + 3 country views compared);?legacy=1restores the old behaviour. - ATC coverage 43.3% → 47.7%: using Wikidata P267 (CC0, credited on About) to add codes and names to 594 ingredients that had none; 127 multi-code ambiguities skipped.
- New research/implementation reports:
reports/index-perf-plan.md(sharding and compression),reports/lazyload-implementation.md,reports/data-depth-20261026.md,reports/dose-mapping-plan.md,reports/mx-atc-implementation.md. The MX strength backfill ETL is ready (dry-run +963 products, 28.7% → 37.6%) pending 50 manual spot checks.
- Primera pantalla de unos 6,08 MB a unos 17 KB: el índice ahora es de carga perezosa — abrir la página solo descarga HTML/CSS/JS; el índice de ~6 MB se descarga al primer texto, al enfocar el buscador, al pulsar un ejemplo o con un enlace profundo
?q=, con aviso bilingüe. Los resultados tras cargar son idénticos byte a byte a v0.3.3 (18 consultas + 3 vistas de país comparadas);?legacy=1restaura el comportamiento antiguo. - Cobertura ATC 43,3% → 47,7%: con Wikidata P267 (CC0, acreditado en About) se añadieron códigos y nombres a 594 principios que no tenían; 127 ambigüedades de múltiples códigos omitidas.
- Nuevos informes de investigación/implementación:
reports/index-perf-plan.md(fragmentación y compresión),reports/lazyload-implementation.md,reports/data-depth-20261026.md,reports/dose-mapping-plan.md,reports/mx-atc-implementation.md. El ETL de relleno de concentración MX está listo (dry-run +963 productos, 28,7% → 37,6%) pendiente de 50 comprobaciones manuales.
v0.3.32026-10-26
- 上线收尾:新增
404.html、robots.txt、sitemap.xml(全站约 3 万个页面)和.nojekyll。 404 页在任意子路径下都按绝对地址回站内;sitemap 给搜索引擎全量入口。 - 仓库结构:
main只放源码,site/dist不再进版本库(构建产物只走gh-pages); v0.3.0–v0.3.2 已补 tag / GitHub Release,线上页脚、About 与仓库版本号对齐。 - 口径统一:README / 方案文档 / DEPLOY 的计数改成当前库——CN 146,347、AU 11,890
(PBS 5,452 + TGA CMI 4,730 + ARTG 明细 1,559 + 补全 144 + 人工核对 5)、
drug_term365、成分页 12,870 / 名字页 17,868、索引 34.8 MB。
- Launch wrap-up: added
404.html,robots.txt,sitemap.xml(about 30k pages site-wide) and.nojekyll. The 404 page returns to the site by absolute URL from any sub-path; the sitemap gives search engines a full entry point. - Repository layout:
mainholds source only;site/distis no longer committed (build artifacts go only togh-pages); v0.3.0–v0.3.2 got tags / GitHub Releases, with footer, About and repo version aligned. - Counts unified: README / design docs / DEPLOY updated to the current DB — CN 146,347; AU 11,890 (PBS 5,452 + TGA CMI 4,730 + ARTG details 1,559 + enrichment 144 + manual 5);
drug_term365; 12,870 ingredient pages / 17,868 name pages; index 34.8 MB.
- Cierre del lanzamiento: se añadieron
404.html,robots.txt,sitemap.xml(unas 30.000 páginas en total) y.nojekyll. La página 404 vuelve al sitio por URL absoluta desde cualquier subruta; el sitemap da a los buscadores una entrada completa. - Estructura del repositorio:
mainsolo contiene código;site/distya no se versiona (los artefactos van solo agh-pages); v0.3.0–v0.3.2 tienen tag / GitHub Release, con pie, About y versión del repositorio alineados. - Cifras unificadas: README / documentos de diseño / DEPLOY actualizados a la base actual — CN 146.347; AU 11.890 (PBS 5.452 + TGA CMI 4.730 + detalles ARTG 1.559 + enriquecimiento 144 + manual 5);
drug_term365; 12.870 páginas de principio / 17.868 páginas de nombre; índice 34,8 MB.
v0.3.22026-10-26
- 修:搜索「扑热息痛」时,acetaminophen 的通用名条目把复方产品(含 6 个成分的 夜用感冒药)并进了同一条目,页面显示成「一个六成分产品 + 10/80/160/325 mg」, 却只标「释放机制不同」。现在复方的成分名行不再并进单方通用名条目;通用名条目 直接链到成分页,不再生成误导性的同名页。
- 加:复方产品在检索结果里单独标「复方 / Combination」,不再只靠碰撞等级判断。
- Fix: searching 扑热息痛 merged combination products (a six-ingredient nighttime cold medicine) into the acetaminophen generic entry, showing "one six-ingredient product + 10/80/160/325 mg" while only flagging "different release". Combination ingredient rows no longer merge into single-ingredient generic entries; generic entries now link straight to the ingredient page and no longer create misleading same-name pages.
- Added: combination products are labelled "复方 / Combination" in search results rather than relying only on collision level.
- Corrección: al buscar 扑热息痛, las combinaciones (un antigripal nocturno de seis principios) se fusionaban en la entrada genérica de paracetamol y se mostraba "un producto de seis principios + 10/80/160/325 mg" marcando solo "liberación diferente". Las filas de principios combinados ya no se fusionan en entradas genéricas de un solo principio; las entradas genéricas enlazan directamente a la página del principio y dejan de crear páginas homónimas engañosas.
- Añadido: los productos combinados se etiquetan "复方 / Combination" en los resultados de búsqueda, no solo por nivel de colisión.
v0.3.12026-10-26
- 加拿大入库:第七个市场。Health Canada 的 DPD(Drug Product Database)全量, 一行 = 一个 DIN,43,847 个 Human 产品(active 14,519 / discontinued 29,323 / withdrawn 5),有强度的 99.8%(43,775)。CPIC 意义上的 OTC 与处方药都在里面。
- 取数路径:官方
allfiles.zip挂在www.canada.ca/content/dam/…,程序化下载恒超时 (HEAD/GET、浏览器 UA 都一样),DPD 网页查询又是服务端分页、getNextPage要绑定会话 (直接请求 500)。改用同一台主机上的公开 DPD Open API(9 个端点、全量 JSON、无需 key),etl/fetch_ca_dpd.py抓、etl/ingest_ca_dpd.py入库,缓存落data/raw/ca/dpd/。 - 加拿大成分名映射:
ACETYLSALICYLIC ACID→ aspirin、ADRENALINE→ epinephrine、GLYCERYL TRINITRATE→ nitroglycerin;括号里的盐记成 variant。acetylsalicylic acid 与 aspirin 在成分卡上合并,加拿大不再自成一套。 - 复方剂量折算:DPD 的「每 4 片 1 g」「每 30 mL 355 mg」换算成每片 / 每 mL。
- 排除:顺势疗法(强度是 CH/DH/X 稀释度)5,571、兽药/放射药/消毒剂 7,340、 复合维生素类(成分 >8)1,169;另外剔除 DPD 误登记成有效成分的辅料(HYPROMELLOSE 等), 否则一种角膜保存液会把 4 万个产品挂到 hypromellose 名下。
- 名字键与显示名分开:DPD 里大量条目名字本身就是产品描述(
15 SPF FPS PREMIUM SUNSCREEN),页面显示原样、检索键再剥一层剂型词;以数字/符号开头、或带残缺前缀的名字 (222 AF EXTRA STRENGTH、+ SINUS COLD FORMULA)在检索结果和成分页里降权。 - 碰撞视图修正:
severe只留给「两边都是单方/简单复方」的情形。两类不再算 severe: (1) 名字本身写着配方(0.9% SODIUM CHLORIDE IRRIGATION、电解质输液的百分比配方名); (2) 一方是复方(≥3 个成分,如Pain Relief Patch、肠外营养液Olimel、顺势疗法复方)。 顺手把成分表 join 到collision里,去掉了COUNT(DISTINCT)的临时 B 树排序 (视图像数从 95,775 涨到 12.2 万,再慢下去建站会明显变慢)。severe 名字 36,579 → 15,312。 - 检索:用户没写释放机制时,速释排在缓释之前(Tylenol 里 8 HR / 12 HOUR 会落到后面)。
- 建站 12,339 张成分页 / 19,220 张名字页;索引 125,667 个键,其中 25,223 个带 CA、 22,172 个只在加拿大出现。
- 许可:DPD 条款允许非商业再使用,须注明来源(About 页已写 © His Majesty the King in Right of Canada)。
- Canada added: the seventh market. Full Health Canada DPD (Drug Product Database): one row = one DIN, 43,847 human products (active 14,519 / discontinued 29,323 / withdrawn 5), 99.8% with strength (43,775); includes OTC and prescription drugs.
- Ingestion path: the official
allfiles.ziponwww.canada.ca/content/dam/…always times out programmatically (HEAD/GET, browser UA alike), and the DPD web query is server-paged with session-boundgetNextPage(500 on direct requests). Switched to the public DPD Open API on the same host (9 endpoints, full JSON, no key);etl/fetch_ca_dpd.pyfetches,etl/ingest_ca_dpd.pyingests, cache underdata/raw/ca/dpd/. - Canadian ingredient name mapping:
ACETYLSALICYLIC ACID→ aspirin,ADRENALINE→ epinephrine,GLYCERYL TRINITRATE→ nitroglycerin; salts in parentheses become variants. acetylsalicylic acid and aspirin merge on the ingredient card; Canada no longer stands apart. - Combination dose conversion: DPD's "1 g per 4 tablets" / "355 mg per 30 mL" converted to per-tablet / per-mL.
- Excluded: homeopathy (CH/DH/X dilutions) 5,571; veterinary/radiopharma/disinfectant 7,340; multivitamins (>8 ingredients) 1,169; also DPD excipients wrongly registered as actives (HYPROMELLOSE etc.), otherwise one corneal preservative solution would attach 40k products to hypromellose.
- Name keys separated from display names: many DPD names are product descriptions (
15 SPF FPS PREMIUM SUNSCREEN); pages show them as-is while search keys strip another layer of form words; names starting with digits/symbols or with broken prefixes (222 AF EXTRA STRENGTH,+ SINUS COLD FORMULA) are down-ranked in results and ingredient pages. - Collision view fix:
severeis kept only when both sides are single-ingredient or simple combinations. Two cases no longer count as severe: (1) names that state the formula (0.9% SODIUM CHLORIDE IRRIGATION, percentage electrolyte formulas); (2) one side is a combination (≥3 ingredients, e.g.Pain Relief Patch, parenteral nutritionOlimel, homeopathic combos). The ingredient table was joined intocollisionand the temporary B-tree sort forCOUNT(DISTINCT)removed (views 95,775 → 122k; further slowdown would hurt build time). Severe names 36,579 → 15,312. - Search: immediate-release now ranks before modified-release when the user did not specify release (8 HR / 12 HOUR Tylenol variants move down).
- Built 12,339 ingredient pages / 19,220 name pages; index 125,667 keys, 25,223 with CA and 22,172 Canada-only.
- Licence: DPD terms allow non-commercial re-use with source attribution (About now shows © His Majesty the King in Right of Canada).
- Canadá añadido: séptimo mercado. DPD completo de Health Canada (Drug Product Database): una fila = un DIN, 43.847 productos humanos (activos 14.519 / descontinuados 29.323 / retirados 5), 99,8% con concentración (43.775); incluye OTC y receta.
- Ruta de obtención: el
allfiles.zipoficial enwww.canada.ca/content/dam/…siempre agota el tiempo programáticamente (HEAD/GET, UA de navegador igual), y la consulta web del DPD es paginada en servidor congetNextPageligado a sesión (500 en peticiones directas). Se pasó a la DPD Open API pública del mismo host (9 endpoints, JSON completo, sin clave);etl/fetch_ca_dpd.pydescarga,etl/ingest_ca_dpd.pycarga, caché endata/raw/ca/dpd/. - Mapeo de nombres de principios canadienses:
ACETYLSALICYLIC ACID→ aspirin,ADRENALINE→ epinephrine,GLYCERYL TRINITRATE→ nitroglycerin; las sales entre paréntesis se registran como variantes. acetylsalicylic acid y aspirin se fusionan en la ficha del principio; Canadá deja de ser un conjunto aparte. - Conversión de dosis en combinaciones: "1 g por 4 comprimidos" / "355 mg por 30 mL" del DPD se convierten a por comprimido / por mL.
- Excluidos: homeopatía (diluciones CH/DH/X) 5.571; veterinaria/radiofármacos/desinfectantes 7.340; multivitamínicos (>8 principios) 1.169; también excipientes del DPD registrados por error como activos (HYPROMELLOSE, etc.), pues una solución conservante corneal colgaría 40.000 productos de hypromellose.
- Claves de nombre separadas del nombre visible: muchos nombres del DPD son descripciones de producto (
15 SPF FPS PREMIUM SUNSCREEN); la página los muestra tal cual mientras la clave de búsqueda quita otra capa de palabras de forma; nombres que empiezan por dígito/símbolo o con prefijos rotos (222 AF EXTRA STRENGTH,+ SINUS COLD FORMULA) se penalizan en resultados y páginas de principio. - Corrección de la vista de colisiones:
severesolo se mantiene cuando ambos lados son monofármaco o combinación simple. Dos casos dejan de ser severe: (1) nombres que indican la fórmula (0.9% SODIUM CHLORIDE IRRIGATION, fórmulas porcentuales de electrolitos); (2) un lado es combinación (≥3 principios, p. ej.Pain Relief Patch, nutrición parenteralOlimel, combinaciones homeopáticas). Se unió la tabla de principios acollisiony se eliminó la ordenación temporal B-tree deCOUNT(DISTINCT)(vistas 95.775 → 122 mil; más lentitud afectaría al build). Nombres severe 36.579 → 15.312. - Búsqueda: la liberación inmediata se ordena antes de la modificada cuando el usuario no especifica liberación (variantes Tylenol 8 HR / 12 HOUR bajan).
- Se construyeron 12.339 páginas de principio / 19.220 de nombre; índice con 125.667 claves, 25.223 con CA y 22.172 solo de Canadá.
- Licencia: los términos del DPD permiten reutilización no comercial con atribución (About muestra © His Majesty the King in Right of Canada).
v0.3.02026-10-26
- 澳洲补 OTC:从 1 层变 3 层。PBS 只补贴处方药,Panadol / Nurofen / Gaviscon 这类
在澳洲站查不到;ARTG 又没有批量文件。这次把能合法拿的两块补上:
- TGA CMI 目录(
www.ebs.tga.gov.au,不是被墙的 www.tga.gov.au):4,734 个 「商品名 + 有效成分」,fetch_tga_cmi.py30 个请求拉完,ingest_tga_cmi.py入库 4,730 个 AU 产品(Panadol 5 个、Nurofen 6 个变体都在)。目录没有规格/剂型,强度留空, 状态写unknown(有 CMI ≠ 当前在售)。 - listed OTC 人工种子:Gaviscon 是 AUST L,PBS 和 CMI 都盖不到,按厂家澳洲官网 核对了 5 个包装(每 10 mL / 每片含量 + 来源 URL)。 - 澳洲合计 10,500+ 个产品(PBS 5,452 + CMI 4,730 + ARTG 明细 300+ + Gaviscon 5), 索引里 8,000+ 个名字带 AU。
- ARTG 名称层:eBS 的 Current Medicines 目录 30 条/页,全量抓到 34,594 条
(商品名 + 申办方 + ARTG ID),进
artg_entry表;站点出data/artg.json, 产品未命中或选了澳洲但澳洲为空时,列出「ARTG 有登记、成分未收录」的条目 (Mylanta、Ural 这类 listed OTC 现在至少能查到 ARTG 号)。 - 授权边界:CMI 文档本身有许可门(再发布需 sponsor 许可),只取目录页的事实字段; PBS API 保留 Commonwealth 版权声明。ARTG 全量仍无批量——eBS 的 Current Medicines 目录 可 30 条/页翻(品牌 + 申办方 + ARTG ID),但详情只有 PDF,成分级全量只能 FOI。
- 建站 11,300+ 张成分页 / 14,400+ 张名字页。
- 覆盖表改为数据源日期:
/about.html第三列不再显示我们的抓取时间,而是数据源自己的 发布 / 生效 / 快照日期——openFDAmeta.last_updated(2026-10-23)、dm+d 10.2.0 发布日(2026-10-19)、NHSA 2025-04-04 快照、PBS schedule 4751 生效日(2026-10-01); CIMA 实时库标live,COFEPRIS 年度 PDF 标—。source.data_as_of由db/source_dates.py在建站前自动推导。
- Australia OTC expanded from 1 layer to 3. PBS covers prescription drugs only, so Panadol / Nurofen / Gaviscon were missing on the AU side, and ARTG has no bulk file. Two legally available layers were added: TGA CMI catalogue (
www.ebs.tga.gov.au, not the blocked www.tga.gov.au) — 4,734 "brand + active ingredient" entries, fetched in 30 requests byfetch_tga_cmi.pyand ingested as 4,730 AU products byingest_tga_cmi.py(including 5 Panadol and 6 Nurofen variants); the catalogue has no strength/form, so strength stays empty and status isunknown(CMI ≠ currently marketed). listed OTC manual seeds — Gaviscon is AUST L, covered by neither PBS nor CMI, so 5 packs were verified against the manufacturer's Australian site (per 10 mL / per tablet + source URL). - Australia totals 10,500+ products (PBS 5,452 + CMI 4,730 + ARTG details 300+ + Gaviscon 5); 8,000+ names in the index carry AU.
- ARTG name layer: the eBS Current Medicines catalogue (30/page) fully crawled to 34,594 entries (brand + sponsor + ARTG ID) into
artg_entry; the site emitsdata/artg.jsonand, when a product does not match or a selected market is empty, lists "on the ARTG, ingredient not captured yet" entries (listed OTC such as Mylanta/Ural can now at least be found by ARTG number). - Licensing boundaries: CMI documents themselves are gated (re-publication needs sponsor permission), so only factual fields from the catalogue pages are taken; the PBS API keeps the Commonwealth copyright notice. ARTG still has no bulk data — eBS Current Medicines can be paged at 30/page (brand + sponsor + ARTG ID), but details are PDF only and full ingredient data is FOI-only.
- Built 11,300+ ingredient pages / 14,400+ name pages.
- Coverage table switched to source dates: the third column of
/about.htmlno longer shows our fetch time but the source's own publication/effective/snapshot date — openFDAmeta.last_updated(2026-10-23), dm+d 10.2.0 release (2026-10-19), NHSA 2025-04-04 snapshot, PBS schedule 4751 effective date (2026-10-01); CIMA live DB is markedliveand COFEPRIS annual PDFs as—.source.data_as_ofis derived before the build bydb/source_dates.py.
- OTC de Australia ampliado de 1 capa a 3. PBS solo cubre medicamentos de receta, así que Panadol / Nurofen / Gaviscon no aparecían en el lado AU, y ARTG no tiene fichero masivo. Se añadieron dos capas legalmente disponibles: catálogo TGA CMI (
www.ebs.tga.gov.au, no el bloqueado www.tga.gov.au) — 4.734 entradas de "marca + principio activo", descargadas en 30 peticiones porfetch_tga_cmi.pye ingresadas como 4.730 productos AU poringest_tga_cmi.py(incluye 5 Panadol y 6 variantes Nurofen); el catálogo no tiene concentración/forma, así que la concentración queda vacía y el estadounknown(CMI ≠ comercializado actualmente). semillas manuales de OTC listed — Gaviscon es AUST L, no cubierto por PBS ni CMI, así que se verificaron 5 envases contra la web australiana del fabricante (por 10 mL / por comprimido + URL de origen). - Australia suma más de 10.500 productos (PBS 5.452 + CMI 4.730 + detalles ARTG 300+ + Gaviscon 5); más de 8.000 nombres del índice llevan AU.
- Capa de nombres ARTG: el catálogo eBS Current Medicines (30/página) se rastreó completo hasta 34.594 entradas (marca + promotor + ARTG ID) en
artg_entry; el sitio emitedata/artg.jsony, cuando un producto no coincide o el mercado seleccionado está vacío, lista entradas "en ARTG, principio no capturado" (OTC listed como Mylanta/Ural ya se pueden al menos encontrar por número ARTG). - Límites de licencia: los documentos CMI están restringidos (republicar requiere permiso del promotor), así que solo se toman campos factuales de las páginas del catálogo; la API PBS mantiene el aviso de copyright de la Commonwealth. ARTG sigue sin datos masivos — eBS Current Medicines se pagina a 30/página (marca + promotor + ARTG ID), pero los detalles son solo PDF y los datos completos de principios solo por FOI.
- Se construyeron más de 11.300 páginas de principio / 14.400 de nombre.
- Tabla de cobertura cambiada a fechas de la fuente: la tercera columna de
/about.htmlya no muestra nuestra fecha de captura sino la fecha de publicación/vigencia/snapshot de la propia fuente — openFDAmeta.last_updated(2026-10-23), dm+d 10.2.0 (2026-10-19), snapshot NHSA 2025-04-04, fecha de vigencia del schedule PBS 4751 (2026-10-01); CIMA (base en vivo) se marcalivey los PDF anuales de COFEPRIS como—.source.data_as_ofse deriva antes del build condb/source_dates.py.
v0.2.42026-10-26
- 静态资源版本化:所有 CSS/JS 引用加
?v=<构建时间戳>,更新后浏览器不用硬刷新。 - 25,747 个文件全量重建。
- Static asset versioning: every CSS/JS reference now carries
?v=<build timestamp>, so browsers do not need a hard refresh after updates. - Full rebuild of 25,747 files.
- Versionado de recursos estáticos: cada referencia CSS/JS lleva ahora
?v=<marca de tiempo del build>, así el navegador no necesita recarga forzada tras las actualizaciones. - Reconstrucción completa de 25.747 archivos.
v0.2.32026-10-26
- 修:国家选择器解析崩溃(tuple / entry 不匹配)。
- 加:
?country=AU这类深链,可直接定位到某个市场。 data/index.json加构建时间戳,新名字不用等缓存过期。
- Fix: country-selector parsing crash (tuple / entry mismatch).
- Added: deep links such as
?country=AUjump straight to a market. data/index.jsongains a build timestamp so new names do not wait for cache expiry.
- Corrección: fallo de parseo del selector de país (desajuste tuple / entry).
- Añadido: enlaces profundos como
?country=AUllevan directamente a un mercado. data/index.jsonincluye marca de tiempo de build para que los nombres nuevos no esperen a que caduque la caché.
v0.2.22026-10-26
- 国家选择器改语义:不再过滤结果,而是回答「这个药在该市场叫什么」—— 同一种成分在不同国家的商品名并列展示。
- Country selector semantics changed: it no longer filters results but answers "what is this drug called in that market?" — the same ingredient's brand names across countries are shown side by side.
- Cambio de semántica del selector de país: ya no filtra resultados sino que responde "¿cómo se llama este medicamento en ese mercado?" — las marcas del mismo principio en distintos países se muestran una al lado de otra.
v0.2.12026-10-26
- 2 字中文子串匹配:输入「泰诺」「立普妥」这类不完整的名字也能命中(此前要 ≥3 字)。
- 加:substance 重复项自动检查,工作区与建站结果同步。
- 2-character Chinese substring matching: incomplete names such as 泰诺 or 立普妥 now match (previously ≥3 characters were required).
- Added: automatic duplicate-substance checks, synced between the workspace and the build output.
- Coincidencia por subcadena china de 2 caracteres: nombres incompletos como 泰诺 o 立普妥 ya coinciden (antes se exigían ≥3 caracteres).
- Añadido: comprobación automática de principios duplicados, sincronizada entre el espacio de trabajo y el resultado del build.
v0.2.02026-10-26
- 修:中国复方产品丢失第二个成分(3,049 行)——二甲双胍格列本脲、缬沙坦氨氯地平、 厄贝沙坦氢氯噻嗪、阿莫西林克拉维酸等复方现在完整入库。
- 227 个文件重建。
- Fix: Chinese combination products lost their second ingredient (3,049 rows) — metformin/glyburide, valsartan/amlodipine, irbesartan/hydrochlorothiazide, amoxicillin/clavulanate and similar combinations are now ingested completely.
- 227 files rebuilt.
- Corrección: las combinaciones chinas perdían el segundo principio (3.049 filas) — metformina/glibenclamida, valsartán/amlodipino, irbesartán/hidroclorotiazida, amoxicilina/clavulánico y similares ahora se cargan completas.
- 227 archivos reconstruidos.
v0.1.42026-10-26
- 美国街头 / 民间 / 类别叫法 331 条:新建
drug_term表,收录 NIDA「Also called」 247 条 + DEA 2018 报告人工筛出的 64 条 + MedlinePlus 民间叫法 20 条。支持三类中文昵称表装不下的情况: 类别词(downers = 镇静剂)、本库无上市产品的管制物质(molly = MDMA)、复方(lean = 可待因 + 异丙嗪)。 - 统一别名视图
alias_all:nickname+drug_term合成检索层唯一入口;原有 57 条中文 昵称不受影响,搜molly/bars/speed都会先说明「这是什么叫法」再列商品。 - FDA 易混淆药对 22 对:新建
confusable_pair表,来源 FDA Name Differentiation Project 的 tall-man 名单;成分页顶部给警告,新增/confused.html列表页。 - 授权边界:ISMP/ECRI 的《List of Confused Drug Names》有版权,未整表复制;页面明确写 「这是 FDA 官方 tall-man 名单,不是完整 LASA 清单」。
- 检索测试 15 → 19 项;建站 10,843 张成分页 / 13,632 张名字页。
- 331 US street / folk / class names: new
drug_termtable with 247 NIDA "Also called" names, 64 manually selected from the 2018 DEA report and 20 MedlinePlus folk names. Covers three cases the Chinese nickname table cannot: class words (downers = sedatives), controlled substances with no marketed product here (molly = MDMA) and combinations (lean = codeine + promethazine). - Unified alias view
alias_all:nickname+drug_termcombined into one search entry point; the original 57 Chinese nicknames are unaffected, and searchingmolly/bars/speedfirst explains what the name refers to, then lists products. - 22 FDA confusable pairs: new
confusable_pairtable sourced from the FDA Name Differentiation Project tall-man list; a warning appears at the top of ingredient pages and a new/confused.htmllist page was added. - Licensing boundaries: ISMP/ECRI's List of Confused Drug Names is copyrighted and was not copied wholesale; the page states explicitly "this is the FDA tall-man list, not the complete LASA list".
- Search tests 15 → 19; built 10,843 ingredient pages / 13,632 name pages.
- 331 nombres callejeros / populares / de clase de EE. UU.: nueva tabla
drug_termcon 247 nombres "Also called" de NIDA, 64 seleccionados manualmente del informe DEA 2018 y 20 nombres populares de MedlinePlus. Cubre tres casos que la tabla de apodos chinos no puede: palabras de clase (downers = sedantes), sustancias controladas sin producto comercializado aquí (molly = MDMA) y combinaciones (lean = codeína + prometazina). - Vista unificada de alias
alias_all:nickname+drug_termen un único punto de entrada de búsqueda; los 57 apodos chinos originales no cambian, y buscarmolly/bars/speedprimero explica a qué se refiere el nombre y luego lista productos. - 22 pares confundibles de la FDA: nueva tabla
confusable_paircon la lista tall-man del FDA Name Differentiation Project; aviso en la parte superior de las páginas de principio y nueva página de lista/confused.html. - Límites de licencia: la List of Confused Drug Names de ISMP/ECRI tiene derechos de autor y no se copió completa; la página indica explícitamente "esta es la lista tall-man de la FDA, no la lista LASA completa".
- Pruebas de búsqueda 15 → 19; construidas 10.843 páginas de principio / 13.632 de nombre.
v0.1.32026-10-26
- 模糊检索增强:没有精确命中时自动退到近似匹配,并明确标出「没有精确命中,以下是最接近的名字」,
不让用户误以为这是精确结果。例如
盐酸西利嗪→盐酸西替利嗪片(CETIRIZINE)。 - 编辑距离阈值按长度分档:短词 ≤2,9 字以上放宽到 ≤3;只有完全无直接命中时才启用,
避免
Lipitor带出Zifitor这类噪音。
- Fuzzy search upgrade: when there is no exact hit, search falls back to approximate matching and clearly states "no exact match; closest names below" so users do not mistake it for an exact result. Example:
盐酸西利嗪→盐酸西替利嗪片(CETIRIZINE). - Edit-distance threshold varies by length: ≤2 for short words, up to ≤3 for 9+ characters; only enabled when there is no direct hit at all, avoiding noise such as
LipitorreturningZifitor.
- Mejora de búsqueda difusa: sin coincidencia exacta, la búsqueda recurre a coincidencia aproximada y lo indica claramente ("sin coincidencia exacta; los nombres más cercanos abajo") para que no se confunda con un resultado exacto. Ejemplo:
盐酸西利嗪→盐酸西替利嗪片(CETIRIZINE). - El umbral de distancia de edición varía por longitud: ≤2 en palabras cortas y hasta ≤3 en 9+ caracteres; solo se activa cuando no hay ninguna coincidencia directa, evitando ruido como que
LipitordevuelvaZifitor.
v0.1.22026-10-26
- 俗称表 23 → 57 条:补中文旧名(扑尔敏、非那根、654-2、速尿、安体舒通、雷米封、安乃近)、 原研商品名(络活喜、拜新同、代文、科素亚、安博维、拜唐苹、达美康、亚莫利、优甲乐、赛治、 洛赛克、波立维、舒降之、力平之、拜阿司匹灵、吗丁啉、思密达、达克宁、芬必得、必理通、达菲)、 西语区通用名(Tempra、Mejoral 指向对乙酰氨基酚)。
- 每条都带
kind(旧名 / 网络俗称 / 简称 / 误称)和source,命中后在结果页顶部单独说明。 - 俗称存放在
nickname表,由data/seed_nicknames.py播种并已串进run_all.py,可复现。
- Nickname table 23 → 57 entries: added Chinese legacy names (扑尔敏, 非那根, 654-2, 速尿, 安体舒通, 雷米封, 安乃近), originator brand names (络活喜, 拜新同, 代文, 科素亚, 安博维, 拜唐苹, 达美康, 亚莫利, 优甲乐, 赛治, 洛赛克, 波立维, 舒降之, 力平之, 拜阿司匹灵, 吗丁啉, 思密达, 达克宁, 芬必得, 必理通, 达菲) and Spanish-region generic names (Tempra, Mejoral → acetaminophen).
- Each entry carries
kind(legacy / internet slang / abbreviation / misnomer) andsource; when matched, the result page shows a separate note at the top. - Nicknames live in the
nicknametable, seeded bydata/seed_nicknames.pyand wired intorun_all.py, so they are reproducible.
- Tabla de apodos 23 → 57 entradas: se añadieron nombres chinos antiguos (扑尔敏, 非那根, 654-2, 速尿, 安体舒通, 雷米封, 安乃近), marcas originales (络活喜, 拜新同, 代文, 科素亚, 安博维, 拜唐苹, 达美康, 亚莫利, 优甲乐, 赛治, 洛赛克, 波立维, 舒降之, 力平之, 拜阿司匹灵, 吗丁啉, 思密达, 达克宁, 芬必得, 必理通, 达菲) y nombres genéricos de la región hispana (Tempra, Mejoral → paracetamol).
- Cada entrada lleva
kind(antiguo / jerga de internet / abreviatura / nombre erróneo) ysource; al coincidir, la página de resultados muestra una nota aparte arriba. - Los apodos están en la tabla
nickname, sembrada pordata/seed_nicknames.pye integrada enrun_all.py, por lo que son reproducibles.
v0.1.12026-10-25
- 修:索引只收品牌名,导致中国绝大多数仿制药(只有通用名)搜不到。
盐酸左西替利嗪库里有 280 个产品,却零命中。现在通用名全部进索引。 - 加:精确命中品牌后,单独列出「同成分的其他商品」——用户搜的是牌子, 想知道的是这个成分还有哪些选择。
- 修:NHSA 数据里混入控制字符(
糠酸莫米松乳膏\x02)导致建站崩溃, 文件名生成前先剥离。 - 索引 17.2 MB → 27.1 MB;页面 24,471 个。通用名只在「有品牌名或有碰撞」时单独成页。
- Fix: the index only contained brand names, so most Chinese generics (generic-name only) could not be found.
盐酸左西替利嗪had 280 products but zero hits. Generic names are now fully indexed. - Added: after an exact brand hit, other products with the same ingredient are listed separately — the user searched a brand and wants to know the alternatives.
- Fix: control characters in NHSA data (e.g.
糠酸莫米松乳膏\x02) crashed the build; they are stripped before file-name generation. - Index 17.2 MB → 27.1 MB; 24,471 pages. Generic names get their own page only when they have a brand name or a collision.
- Corrección: el índice solo contenía marcas, así que la mayoría de los genéricos chinos (solo nombre genérico) no se encontraban.
盐酸左西替利嗪tenía 280 productos y cero coincidencias. Ahora todos los nombres genéricos están indexados. - Añadido: tras una coincidencia exacta de marca, se listan aparte otros productos con el mismo principio — el usuario buscó una marca y quiere saber las alternativas.
- Corrección: caracteres de control en datos de NHSA (p. ej.
糠酸莫米松乳膏\x02) rompían el build; se eliminan antes de generar nombres de archivo. - Índice 17,2 MB → 27,1 MB; 24.471 páginas. Los nombres genéricos tienen página propia solo si tienen marca o colisión.
v0.1.02026-10-25
- 首次上线。六个市场,359,200 条产品记录。 | 市场 | 条数 | 来源 | 快照 / 同步日期 | |---|---:|---|---| | 中国 | 146,347 | 国家医保局 医保药品分类与代码数据库 | 2025-04-04 快照 | | 美国 | 110,179 | openFDA NDC Directory | 2026-10-23 | | 英国 | 61,051 | NHSBSA dm+d 10.2.0(OGL v3.0) | 2026-10-19 release | | 西班牙 | 25,293 | AEMPS CIMA | 2026-10 | | 墨西哥 | 10,878 | COFEPRIS Registro Sanitario | 2026-10 | | 澳大利亚 | 5,452 | PBS | 2026-10 |
- 功能
- 检索结果按 成分 → 剂量 → 品牌 → 厂家 表格呈现;成分与剂量是第一优先级。
- 六种文字归一化:拉丁、中文、西里尔、全角、配比
875/125、浓度5 mg/5 ml。 - 同名碰撞自动推导:不同活性成分 = 严重,释放机制不同 = 警告。
- 跨语言品牌家族:Tylenol ↔ 泰诺 ↔ 泰诺林、Benadryl、Gaviscon、Lipitor ↔ 立普妥。
- BAN↔USAN 同义词 24 组:paracetamol ↔ acetaminophen 等。
- 三语界面(EN / ES / 中文)。
- 模糊匹配只在完全没有直接命中时启用,避免
Lipitor带出Zifitor。 - 已知缺口
- 中国复方塌陷:4,411 行复方(二甲双胍格列本脲、缬沙坦氨氯地平、 厄贝沙坦氢氯噻嗪、阿莫西林克拉维酸…)只入库了第一个成分,第二个被吞掉。 待修,优先级最高。
- 中国中成药(98,703 行)默认未入库:只有 42 行带真实商品名。
- 西班牙 208 条四成分以上复方未入库(列表接口
vtm为占位符multicomponente)。 - 英国
Co-Amoxiclav等组合名未拆成两个成分。 - 剂量只做到同型对应(D1);盐基折算(D2)与不可互换判定(D3)未实现。
- ATC 覆盖不全:西班牙补了 1,809 个成分,其余市场多为空。
- First release. Six markets, 359,200 product records: China 146,347 (National Healthcare Security Administration drug classification and code database, 2025-04-04 snapshot); US 110,179 (openFDA NDC Directory, 2026-10-23); UK 61,051 (NHSBSA dm+d 10.2.0, OGL v3.0, 2026-10-19 release); Spain 25,293 (AEMPS CIMA, 2026-10); Mexico 10,878 (COFEPRIS Registro Sanitario, 2026-10); Australia 5,452 (PBS, 2026-10).
- Features
- Results are shown as an ingredient → strength → brand → manufacturer table; ingredient and strength come first.
- Six-script normalization: Latin, Chinese, Cyrillic, full-width, ratios
875/125, concentrations5 mg/5 ml. - Same-name collisions derived automatically: different active ingredient = severe, different release mechanism = warning.
- Cross-language brand families: Tylenol ↔ 泰诺 ↔ 泰诺林, Benadryl, Gaviscon, Lipitor ↔ 立普妥.
- 24 BAN↔USAN synonym pairs: paracetamol ↔ acetaminophen etc.
- Trilingual interface (EN / ES / Chinese).
- Fuzzy matching is enabled only when there is no direct hit, avoiding
LipitorreturningZifitor. - Known gaps
- Chinese combination collapse: 4,411 combination rows (metformin/glyburide, valsartan/amlodipine, irbesartan/hydrochlorothiazide, amoxicillin/clavulanate…) ingested only the first ingredient, the second was dropped. To fix, highest priority.
- Chinese traditional patent medicines (98,703 rows) not ingested by default: only 42 rows carry a real brand name.
- 208 Spanish combinations with four or more ingredients not ingested (list API
vtmis the placeholdermulticomponente). - UK combination names such as
Co-Amoxiclavare not split into two ingredients. - Dose mapping only reaches same-form equivalence (D1); salt-base conversion (D2) and non-interchangeability judgement (D3) are not implemented.
- ATC coverage is incomplete: Spain had 1,809 ingredients added; other markets are mostly empty.
- Primera versión. Seis mercados, 359.200 registros de producto: China 146.347 (base de clasificación y códigos de medicamentos de la Administración Nacional de Seguridad Sanitaria, snapshot 2025-04-04); EE. UU. 110.179 (openFDA NDC Directory, 2026-10-23); Reino Unido 61.051 (NHSBSA dm+d 10.2.0, OGL v3.0, release 2026-10-19); España 25.293 (AEMPS CIMA, 2026-10); México 10.878 (COFEPRIS Registro Sanitario, 2026-10); Australia 5.452 (PBS, 2026-10).
- Funciones
- Los resultados se muestran como tabla principio → concentración → marca → fabricante; principio y concentración son la primera prioridad.
- Normalización de seis escrituras: latina, china, cirílica, ancho completo, proporciones
875/125, concentraciones5 mg/5 ml. - Colisiones de mismo nombre derivadas automáticamente: principio activo distinto = severa, mecanismo de liberación distinto = aviso.
- Familias de marcas entre idiomas: Tylenol ↔ 泰诺 ↔ 泰诺林, Benadryl, Gaviscon, Lipitor ↔ 立普妥.
- 24 pares de sinónimos BAN↔USAN: paracetamol ↔ acetaminophen, etc.
- Interfaz trilingüe (EN / ES / chino).
- La coincidencia difusa solo se activa cuando no hay coincidencia directa, evitando que
LipitordevuelvaZifitor. - Limitaciones conocidas
- Colapso de combinaciones chinas: 4.411 filas de combinaciones (metformina/glibenclamida, valsartán/amlodipino, irbesartán/hidroclorotiazida, amoxicilina/clavulánico…) ingresaron solo el primer principio y el segundo se perdió. Pendiente, máxima prioridad.
- Medicamentos patentados tradicionales chinos (98.703 filas) no ingresados por defecto: solo 42 filas llevan marca real.
- 208 combinaciones españolas de cuatro o más principios no ingresadas (la API de lista
vtmes el marcadormulticomponente). - Los nombres combinados del Reino Unido como
Co-Amoxiclavno se dividen en dos principios. - La correspondencia de dosis solo llega a equivalencia de la misma forma (D1); la conversión sal-base (D2) y el juicio de no intercambiabilidad (D3) no están implementados.
- La cobertura ATC es incompleta: España añadió 1.809 principios; los demás mercados están casi vacíos.