La oficina de China gasta contra un presupuesto mensual que hoy no se ve en ninguna
pantalla: se pregunta por chat y se responde de memoria. La alcancía lo pone fijo en Caja —
un frasco que se vacía con cada gasto de la oficina de China y que dice, de un vistazo,
cuánto queda del mes.
Presupuesto
Mensual
Moneda
USD
Dirección
Frasco
Endpoint
Ya existe
9:41
Hoyjue 27 ago
CH
Oficina · CN
Alcancía · queda de agosto$4.920,0041 % · quedan 4 díasGastado $7.080,00 de $12.000,00Va sobrada
Hoy · Oficina · CN
−$1.116,00
3 gastos1 traspaso
15:02Insumos de empaqueAlipay CNY−$76,00≈ ¥547,20
12:30Traspaso ICBC → BinanceICBC CNYtraspaso · no consume$2.000,00≈ ¥14.400
miéFlete interno a ShenzhenBinance USDT−$310,00USDT
Nuevo movimiento
01Hoy: el presupuesto existe, pero nadie lo ve
China · WhatsApp · de memoria
La oficina de China tiene un monto asignado cada mes. Se gasta contra él todos los días —
alquiler, courier, insumos, nómina— y la única forma de saber cuánto queda es preguntar por chat
y esperar a que alguien sume. Cuando la respuesta llega, ya se gastó otra vez.
La consecuencia no es contable, es de ritmo: nadie sabe si va rápido o lento. Se descubre
que el mes se pasó cuando el mes ya se pasó.
Hoy
«¿Cuánto nos queda del mes?»
La pregunta viaja. Sale por chat, la responde una persona, y la respuesta es una estimación.
Nadie ve el ritmo. Saber que se gastaron $7.080 no dice nada si no se sabe cuánto mes queda.
El traspaso confunde. Mover plata de una cuenta propia a otra parece un gasto enorme y no lo es.
Latencia de la respuesta: horas · fuente: la memoria de alguien
Con la alcancía
La respuesta está fija en la pantalla
Siempre visible. Vive en el chrome de Caja: en Hoy y en la barra de escritorio, no detrás de un menú.
Se entiende sin explicación. El nivel del frasco es la respuesta; al lado, «quedan 4 días» la pone en tiempo.
El traspaso no la vacía. Solo el gasto operativo baja el nivel; el movimiento entre cuentas propias lo dice en la fila.
Latencia: 0 · fuente: GET /finance/budgets, que ya existe
02Tres formas de dibujar la misma alcancía
mismo dato · misma copy
Las tres muestran lo mismo — queda $4.920,00 de $12.000,00, agosto, oficina China — y
comparten estados, copy y fuente. Lo que cambia es la forma, y con ella dos cosas que sí importan en una
PWA: cuánto alto ocupan y si dicen el ritmo del mes. Cada una se muestra al ancho real de la
pantalla, 390 px.
Carlos eligió la B, el frasco, después de ver el Studio en cresco-a el 27 de agosto.
A y C se quedan acá como el registro de lo que se evaluó y de lo que costaba cada una; el resto de la
pieza —el chrome, los estados y las métricas— ya está dibujado con el frasco.
A
Barra / tanqueevaluada
Hoyjue 27 ago
CH
Alcancía · queda de agostoOficina · CN
$4.920,00Va sobrada
plata41 %
mes13 %
Gastado $7.080,00 de $12.000,004 días
Dos rieles que se vacían en la misma dirección y miden lo mismo: lo que queda. El grueso
es la plata, el fino es el mes. Si el grueso es más largo, sobra presupuesto — y el chip lo dice en
palabras, para que el color nunca sea el único canal.
La más compacta de las tres y la única que se condensa a una línea de 44 px sin perder nada.
Responde «¿voy bien?», no solo «¿cuánto queda?».
Se condensa a una línea al hacer scroll y en la barra de escritorio.
Es la menos literal: no se parece a una alcancía.
Alto
143 px
Ritmo
Sí
Condensa
44 px
B
Alcancía / frascoelegida
Hoyjue 27 ago
CH
Oficina · CN
Alcancía · queda de agosto$4.920,0041 % · quedan 4 díasGastado $7.080,00 de $12.000,00Va sobrada
Elegida · Carlos, 27 agoLa dirección. El frasco con nivel: lo que cualquiera entiende sin explicación.
Las tres rayitas de medida le dan escala, la tapa con ranura hace de icono de la app, y el pie dice
de qué empresa es la alcancía.
Cero curva de aprendizaje: un frasco medio vacío es un frasco medio vacío.
Memorable: es la imagen que la gente ya usa para hablar del presupuesto.
Es la más alta de las tres en Hoy (157 px contra 143) — se paga con el frasco en miniatura al condensar.
No dibuja el ritmo del mes: el «quedan 4 días» lo dice en texto, no en la forma.
La plata como número y el mes como anillo: dos objetos, dos preguntas.
La orilla del arco es hoy, así que un tick aparte sería el mismo dato dibujado dos veces.
El anillo se lee de lejos: la mejor para la barra ancha de escritorio o un TV de oficina.
Separa plata y tiempo, sin pedir que se comparen dos longitudes.
La proporción de la plata queda en texto («59 % gastado»), no en la forma.
El anillo pide 96 px de alto que en el teléfono compiten con la lista.
Alto
142 px
Ritmo
Sí
Condensa
Regular
Un solo frasco, tres tamaños
La forma elegida se usa en todas partes y no se mezcla con las otras: el frasco grande al tope de
Hoy y como portada del mes en /metricas, y el mismo frasco en miniatura (26 × 32) en
la línea condensada del teléfono y en la barra de escritorio. Al condensarse cambia el tamaño, nunca la
metáfora — un riel ahí sería una segunda forma para el mismo dato. A y C no se implementan.
03Dónde vive: el chrome, no una ruta
Hoy · barra de escritorio
La alcancía no es una pantalla: es parte del marco de Caja. En el teléfono se abre entera
al tope de Hoy y se condensa a una línea cuando la lista sube, sin soltarse del encabezado. En
escritorio vive en la barra de arriba, así que se ve en Hoy, en Nuevo movimiento y en el detalle.
9:41
Hoyjue 27 ago
CH
Alcancía · agosto$4.920,0041 %
HoySemanaMes
15:02Insumos de empaqueAlipay CNY−$76,00≈ ¥547,20
12:30Traspaso ICBC → BinanceICBC CNYtraspaso · no consume$2.000,00≈ ¥14.400
miéFlete interno a ShenzhenBinance USDT−$310,00USDT
miéTasa bancariaICBC CNY−$18,00≈ ¥129,60
marAlmacén YiwuICBC CNY−$1.150,00≈ ¥8.280
marInsumos de oficinaAlipay CNY−$64,00≈ ¥460,80
Nuevo movimiento
Teléfono · pegada al encabezado
El frasco entero al tope de Hoy. Al desplazar la lista se
condensa a una línea de 44 px que no se suelta: el mismo frasco a 26 × 32, monto y porcentaje.
Nunca tapa el botón Nuevo movimiento, que sigue fijo abajo.
Escritorio · dentro de la barra
Va en CajaDesktopBar, entre la etiqueta
«Caja» y la pill de la URL. Como la barra es del layout, la alcancía se ve también en
/nuevo y en /movimiento/[id].
Es un enlace, no un panel
Tocarla lleva a /metricas. En Hoy no se despliega,
no abre acordeón y no crece: la pantalla de captura no se convierte en un tablero.
Es del departamento, no de la empresa
El frasco es la pareja Oficina × CN, así que
no cambia al presionar un chip de empresa: los chips filtran la lista por entidad, el frasco
sigue siendo el sobre del mes. Con una empresa VE o US puesta no se pinta — el sitio se cierra, no
queda un hueco.
Sin monto no desaparece
Si nadie definió el presupuesto del mes, se muestra igual, con
un guión y un Definir monto. El vacío es justamente el mensaje.
12:30Traspaso ICBC → BinanceICBC CNYtraspaso · no consume$2.000,00≈ ¥14.400
10:15Courier internoAlipay CNY−$140,00≈ ¥1.008
Hoy · Oficina · CN
−$1.116,00
3 gastos1 traspaso
Escritorio.Desliza la barra para verla completa. La alcancía condensada es la misma pieza del teléfono, con el mismo frasco
y las mismas cifras tabulares — no una segunda implementación.
04Cinco estados y el cambio de mes
forma + texto + color
Un semáforo que solo cambia de color deja fuera a quien no distingue rojo y verde, y a
cualquiera que mire de reojo. Cada estado cambia además el chip en palabras, el nivel
del frasco y, cuando hace falta, la textura del líquido.
Oficina · CN
Alcancía · queda de agosto—Sin monto definido para agostoSin montoDefinir monto
Sin montoEl estado del día 1, y el de hoy: el monto todavía no está escrito. Vidrio punteado, sin líquido y un guión en vez de cero — cero es un dato, esto es la falta de dato. Definir monto escribe desde Caja.
Oficina · CN
Alcancía · queda de agosto$4.920,0041 % · quedan 4 díasGastado $7.080,00 de $12.000,00Va sobrada
Va sobradaCuatro décimos de frasco para cuatro días de mes. El estado normal: se lee sin números y no pide nada.
Oficina · CN
Alcancía · queda de agosto$720,006 % · quedan 4 díasQueda menos plata que mesApretada
ApretadaEl líquido apenas cubre el fondo y cambia de familia. No es un error: es el aviso de que al ritmo de hoy no se llega a fin de mes.
Oficina · CN
Alcancía · queda de agosto$0,00Se acabó el presupuesto de agostoQuedan 4 días de mesAgotada
AgotadaFrasco vacío y el vidrio en el rojo de la casa. No bloquea nada: Caja sigue registrando gastos, porque el gasto ya ocurrió y ocultarlo no lo deshace.
Oficina · CN
Alcancía · queda de agosto−$340,00Gastado $12.340,00 de $12.000,00Quedan 4 días de mesSobregirada
SobregiradaEl frasco se llena y se raya en diagonal: pasado el borde, el nivel ya no significa nada y la textura lo dice. overBudget ya lo calcula el API.
Y una pregunta al cambiar de mes
El mes no se cierra solo: ni se resetea ni arrastra por su cuenta (decisión 08).
El día 1 llega una notificación con lo que sobró y dos botones que dicen en qué monto arranca el mes —
no «arrastrar» y «resetear» a secas, sino el número que resulta de cada uno.
Cambio de mes
Empieza septiembre
Agosto cerró con $4.920,00 sin gastar. ¿Qué hacemos con la alcancía?
Arrastrar · empezar en $16.920,00Resetear · empezar en $12.000,00
Los botones dicen el resultado
«Arrastrar» y «resetear» son jerga de presupuesto; el
número al que arranca septiembre no lo es. Cada botón lleva el suyo, así que la decisión se toma
mirando la cifra, no traduciendo la palabra.
Una vez al mes, y no bloquea
Mientras no se responda, la alcancía muestra el mes nuevo
con el monto que ya tenía. La notificación espera; Caja sigue registrando gastos.
El mismo sitio donde se escribe el monto
Es el segundo camino de la decisión 10: el
monto se define en Caja, y acá se confirma o se cambia sin ir a ningún lado.
05Qué la vacía — y qué no
gasto sí · traspaso no
Una alcancía que baja con cualquier movimiento deja de servir a la semana. La regla es
corta: baja el nivel el gasto operativo de la oficina de China — la pareja Oficina ×
CN. Nada más.
Baja el nivel
El gasto operativo de China
Egresos atribuidos a la pareja Oficina × CN, salgan de la caja que salgan: Alipay, ICBC o Binance. Alquiler, nómina, courier, insumos, flete interno.
En cualquier moneda, convertido a USD con la tasa del día y congelado en budgetUsdAmount: una tasa nueva no revalúa gasto viejo.
Desde el día que se pagó (spentAt), no desde el día que se registró: un gasto anotado tarde cae en su mes.
Suma: spentUsd, que el API ya calcula.
No baja el nivel
Todo lo que no es consumo
Traspasos entre las cajas de la propia oficina. Pasar de ICBC a Binance no gasta nada: la plata sigue siendo de la casa. La fila lo dice con traspaso · no consume.
Gastos de VE y de US LLC, y los de otros departamentos (Marketing, Operaciones). Otro bolsillo: el sobre es solo Oficina × CN.
Ingresos. Un cobro no recarga la alcancía; la recarga es una decisión del mes, no un movimiento suelto.
Se ven en la lista, no se atribuyen a ningún presupuesto.
La tasa se congela, y por eso el número aguanta
Cada egreso guarda su valor en USD y la tasa que se usó (budgetUsdAmount,
budgetAppliedRate) en el momento de atribuirlo. Si el yuan se mueve a mitad de mes, lo
gastado no cambia — sería un mes que se reescribe solo. byCurrency[] guarda además el
monto original, así que la alcancía siempre puede decir «$7.080,00, de los cuales ¥50.976».
06Las métricas viven en otra ruta
/metricas
La alcancía responde una pregunta: ¿cuánto queda?. Todo lo demás —en qué se fue, cómo
van los meses, qué cuenta pesa más— es otra conversación y otra pantalla. Se llega tocando la alcancía;
en Hoy nunca se despliega, porque Hoy es para registrar, no para analizar.
9:41
MétricasOficina · CN
JunJulAgosto
Oficina · CN
Queda de agosto$4.920,0041 % · gastado $7.080,00
59 %gastado
Nómina$2.400,0034 %
Alquiler$1.800,0025 %
Logística$1.290,0018 %
Insumos$880,0013 %
Otros$710,0010 %
Consumo por mes
mar
abr
may
jun
jul
ago
El frasco encuentra su sitio
Acá el alto no compite con nada, así que la dirección B —la
más literal— es la portada del mes. Es el mismo dato de la barra del chrome, con más aire.
En qué se fue
La dona por categoría sale de las categorías que Egreso ya
tiene. Cinco tajadas y «Otros»; más de eso deja de leerse.
Cómo van los meses
Una barra por mes con el porcentaje consumido. Es la vista que
contesta «¿este mes fue caro?», que la alcancía sola no puede responder.
Sin cruces de moneda
Todo en USD, con el original disponible al tocar. Ninguna cifra de
esta pantalla suma bolívares con yuanes.
07Casi toda la alcancía ya está construida
finance · prisma · caja
Al abrir el esquema aparece la sorpresa útil de esta propuesta: el presupuesto ya
existe en la base de datos, con atribución por egreso y tasa congelada. Lo que falta no es el motor:
es el mes, la fila del presupuesto y la pantalla.
Ya está
Lo que se reutiliza tal cual
model Budget (finance_budgets) — límite en USD por Department y entidad, archivable con active.
Egreso.budgetId + budgetUsdAmount + budgetAppliedRate — la atribución, con el valor en USD y la tasa del día congelados.
GET /finance/budgets — devuelve limitUsd, spentUsd, overBudget (calculado al leer, nunca guardado) y byCurrency[]. Filtra por entity.
GET /finance/budgets/:id — el detalle con los egresos atribuidos, que es la lista de /metricas.
Department + Budget — la pareja que el sobre necesita ya existe. Departamentos hoy: Marketing, Oficina (5c417221-…) y Operaciones. La alcancía es una fila de finance_budgets: departmentId = Oficina, entity = CN, limitUsd = lo que escriban. Oficina hoy solo carga una fila US_LLC de $50.
El chrome de Caja — HoyHeader, CajaDesktopBar y los chips de empresa: los tres sitios donde entra la alcancía, ya construidos.
Falta
Los cuatro huecos reales
El mes.Budget es un total corrido, sin período: hoy no se resetea nunca. La alcancía es mensual, y el cierre no es automático — lo decide una notificación al cambiar de mes (decisión 08). Es el único cambio de modelo grande.
La fila y el valor CN. El sobre no necesita modelo nuevo: es la pareja departmentId + entity que Budget ya tiene. Falta crear la fila al escribir el monto — y que CN exista, porque hoy FinancialEntityEnum es { VE, US_LLC }. Sin departamento nuevo.
Excluir el traspaso. El modelo todavía no distingue un movimiento entre cuentas propias de un gasto, y la alcancía necesita que no se atribuya.
La vista. El endpoint existe y no lo consume ninguna pantalla de Caja. Eso es exactamente lo que dibuja esta propuesta.
08Decisiones
10 tomadas · 0 abiertas
Las cuatro que quedaban abiertas —el monto, el cierre de mes, de qué cuelga y quién edita—
las cerró Carlos el 27 de agosto. Ninguna cambió el dibujo: la maqueta ya mostraba a la vez el número de
ejemplo y el estado sin monto.
Punto
Decisión
Por qué
01Moneda
USD, sin sumar monedas cruzadas. El original queda a un toque.
Budget es canónico en USD y byCurrency explica de dónde salió cada trozo. Un total mixto imprime una cifra que Finanzas no puede reproducir desde ningún registro.
02Dónde vive
En el chrome de Caja — Hoy y barra de escritorio. No es una ruta.
Es un indicador, no un informe. Si hay que ir a buscarlo, se vuelve a preguntar por chat, que es el problema que resuelve.
03Forma por defecto
A, la barra, en el chrome. B en /metricas, C en escritorio ancho.
A es la más compacta y la única que se condensa a una línea de 44 px sin perder nada; con C dice ritmo, B no. Las tres pintan el mismo dato: no son tres implementaciones.
04El traspaso
No consume, y la fila lo dice con traspaso · no consume.
Mover plata entre cuentas propias no es gasto. Esconder la fila haría dudar del total; marcarla lo explica sin abrir nada.
05Al agotarse
No bloquea el registro. Avisa, no impide.
El gasto ya ocurrió. Una app que se niega a anotarlo no evita el sobregiro: solo pierde el dato y devuelve el problema al chat.
06Estados
Color + palabra + forma, siempre los tres.
El color solo deja fuera a quien no lo distingue y a cualquiera que mire de reojo — que es como se mira un indicador fijo.
07El monto
Lo escriben ellos en Caja. No es un número fijo que se configura aparte.
El monto cambia con la operación y quien lo sabe es quien gasta. Pedirlo por el admin lo volvería un trámite y la alcancía nacería vacía. El estado «sin monto» es la puerta: Definir monto escribe.
08Cambio de mes
Ni reset ni arrastre automáticos. Cada mes una notificación pregunta: arrastrar lo que sobró, o empezar de nuevo.
Las dos son legítimas y dependen del mes. Elegir una por defecto sería inventar una política que nadie pidió; preguntar una vez al mes cuesta un toque, y los dos botones dicen en qué monto arranca septiembre.
09De qué cuelga
De la pareja que Budget ya tiene: departmentId = Oficina (5c417221-…) + entity = CN. La fila se crea al escribir el monto.
El sobre vive en finance_budgets (departmentId + entity + limitUsd), no en el departamento: un Department.entity opcional y anulable queda como etiqueta por defecto —Marketing y Operaciones no la necesitan—. Ni departamento nuevo; lo único que hay que agregar es el valor CN al enum, que hoy es { VE, US_LLC }. Oficina hoy solo carga una fila US_LLC de $50.
10Quién edita el monto
Caja, más la notificación mensual como segundo camino.
Mismo motivo que 07: quien gasta es quien sabe. El admin sigue viendo y auditando el presupuesto; lo que se mueve es dónde se escribe.
09Qué no hacemos
el alcance que se sostiene
La alcancía es un indicador de una línea. Todo lo que la convierta en un módulo de control
presupuestario queda fuera de esta propuesta — no porque no sirva, sino porque cada cosa de esta lista
la vuelve algo que hay que administrar.
AprobacionesBloquear el gastoPresupuesto por categoríaAlertas por correoProyeccionesEditar el monto desde HoyAlcancías para otros departamentos
Aprobaciones y bloqueos — la alcancía informa; quien decide si un gasto se hace es una persona, y ya lo decide antes de abrir Caja.
Presupuesto por categoría — cinco sobres pequeños en vez de uno se administran solos y nadie los mantiene. Un sobre, y la dona de /metricas para ver en qué se fue.
Alertas por correo — el indicador está fijo en la pantalla que el operador ya usa todos los días; una notificación sería el mismo dato llegando peor.
Proyecciones — «a este ritmo se acaba el día 24» suena bien y es una estimación. Los dos rieles dicen lo mismo sin inventar nada.
Editar el monto desde Hoy — el monto es dato maestro de Finanzas. Desde Caja se ve y se pide; se define en el admin.
Alcancías para otros departamentos — el pedido es de la oficina de China. Como el sobre es una fila departmentId + entity, darle una a Marketing o a Operaciones después es una fila más, no un rediseño.
El presupuesto del mes, vaciándose a la vista.
Un frasco fijo en Caja que dice cuánto queda y si va sobrada — sin abrir nada, sin preguntarle a nadie.
El motor ya está en el sistema; falta el mes, la fila del presupuesto y esta pantalla.